Numpy中matrix()和array()的区别
matrix() 和 array() 的区别,主要从以下方面说起:
1. 矩阵生成方式不同
import numpy as np a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]]) a2 = np.array(([1, 2], [3, 4]))
b2 = np.mat(([1, 2], [3, 4])) a3 = np.array(((1,2), (3,4)))
b3 = np.mat(((1,2), (3,4))) b4 = np.mat('1 2; 3 4') print("\n",a1,"\n",b1,"\n",a2,"\n",b2,"\n",a3,"\n",b3,"\n",b4)
结果均为:
[[1 2]
[3 4]]
上述变化就是将 “[]” 换成“()”。不同之处在于 b4 内用引号、空格和分号来产生矩阵,这个方法只可以在 matrix() 函数中使用,即b4 = np.mat('1 2; 3 4')。不可以写成的 a4 = np.array('1 2; 3 4') 。
2. 矩阵性质不同
matrix()和 array ()后面加上 .T 得到转置。但是matrix()还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵, array()就不可以。
import numpy as np a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]]) print(a1.T)
print(b1.T)
[[1 3]
[2 4]]
[[1 3]
[2 4]]
import numpy as np
a1 = np.array([[1, 2], [3, 4]])
print(a1.H)
AttributeError: 'numpy.ndarray' object has no attribute 'H'
print(a1.I)
AttributeError: 'numpy.ndarray' object has no attribute 'I'
import numpy as np
b1 = np.mat([[1, 2], [3, 4]]) print(b1.H)
print(b1.I)
[[1 3]
[2 4]]
[[-2. 1. ]
[ 1.5 -0.5]]
3. 在矩阵乘法中的不同
array()的乘法是矩阵中对应位置的两个数相乘。
mat()的乘法是矩阵乘法。
import numpy as np a1 = np.array([[1, 2], [3, 4]])
c1 = np.array([[5,6],[7,8]]) b1 = np.mat([[1, 2], [3, 4]])
d1 = np.mat([[5,6],[7,8]]) print("a1乘c1的结果:",a1*c1)
print("b1乘d1的结果:",b1*d1)
a1乘c1的结果: [[ 5 12]
[21 32]]
b1乘d1的结果: [[19 22]
[43 50]]
array()和mat(),若让他们都遵循矩阵乘法,可以用dot()函数。
print(np.dot(a1,c1))
print(np.dot(b1,d1))
[[19 22]
[43 50]]
[[19 22]
[43 50]]
矩阵平方:array()的平方是矩阵对应位置数的平方。mat()的平方是矩阵乘积。
print("a1的平方",a1**2)
print("b1的平方",b1**2)
a1的平方 [[ 1 4]
[ 9 16]]
b1的平方 [[ 7 10]
[15 22]]
总结:
array()乘法:*代表点乘(对应元素相乘),dot()代表矩阵乘。
mat()乘法:*代表矩阵乘,multiply()代表点乘。
4. matrix()和array()关于秩的区别
5. array()和mat()之间的转换
array()——>mat():np.asmatrix()
a1 = np.array([[1,2], [3,4]])
a1
array([[1, 2],
[3, 4]])
a2 = np.asmatrix(a1)
a2
matrix([[1, 2],
[3, 4]])
mat()——>array():np.asarray()
b1 = np.mat([[1,2], [3,4]])
b1
matrix([[1, 2],
[3, 4]])
b2 = np.asarray(b1)
b2
array([[1, 2],
[3, 4]])
来自:jeexi
Numpy中matrix()和array()的区别的更多相关文章
- Python与线性代数——Numpy中的matrix()和array()的区别
Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有arra ...
- numpy中的matrix与array的区别
Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array ...
- numpy中matrix的特殊属性
一.matrix特殊属性解释 numpy中matrix有下列的特殊属性,使得矩阵计算更加容易 摘自 NumPy Reference Release 1.8.1 1.1 The N-dimensiona ...
- 探求C#.Net中ArrayList与Array的区别 【转】
ArrayList与Array的区别概述 ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例如 ...
- 探求C#.Net中ArrayList与Array的区别
ArrayList与Array的区别概述 ArrayList 是数组的复杂版本.ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能.例 ...
- 在javascript中NodeList和Array的区别及转换方法
随着深入理解javascript 后对于一些小知识的了解慢慢加深,这里说的是关于nodelist和array的区别,相信你一定用过toarray()方法,但是这里通过js 的方法讲解nodelist ...
- Numpy中矩阵和数组的区别
矩阵(Matrix)和数组(Array)的区别主要有以下两点: 矩阵只能为2维的,而数组可以是任意维度的. 矩阵和数组在数学运算上会有不同的结构. 代码展示 1.矩阵的创建 采用mat函数创建矩阵 c ...
- 【转】numpy中 meshgrid 和 mgrid 的区别和使用
转自:https://www.cnblogs.com/shenxiaolin/p/8854197.html 一.meshgrid函数 meshgrid函数通常使用在数据的矢量化上. 它适用于生成网格型 ...
- Python的 numpy中 meshgrid 和 mgrid 的区别和使用
一.meshgrid函数 meshgrid函数通常使用在数据的矢量化上. 它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对. 示例展示: 由上面的示例展示 ...
随机推荐
- NORDIC 修改MTU
https://www.cnblogs.com/jiangjiu/p/10063556.html 注意要修改RAM起始地址,因为MTU增大了
- MySQL之concat、concat_ws、group_concat
concat(str1, str2, ...) 返回结果为连接一起的字符串. concat_ws(separator, str1, str2, ...) 同concat,但是可以指定连接符,sepa ...
- pip命令及虚拟环境的建立
以下命令是pip命令,是帮助我们安装解决python所需要的环境包 列出已经安装的包 pip list 安装要安装的包 pip install 包名 安装特定版本 pip install django ...
- Centos下编译安装nginx
1.安装依赖 yum install -y pcre-devel zlib-devel gcc openssl-devel gd-devel 2.下载安装包 不同版本的nginx下载地址:http:/ ...
- Zabbix 监控Windows磁盘IO
Windows下,打开cmd输入 typeperf -qx > c:\typeperf.txt #打开c:\typeperf.txt文件 windows性能计数器里面包含windows相关数值 ...
- Selenium(6)
一.定位页面元素 1.高级定位:层级定位 思路:先定位到祖先节点,在定位该祖先节点范围内的子节点 2.高级定位:Xpath定位(重点) (1)Xpath定位:Xpath就是一个表达式,表示元素的路径, ...
- QTP(11)
练习:录制Flight登录-打开1-10之间随机编号的订单-退出,打开完订单后,退出前,使用msgbox输出“顾客x预定了y从z到w的c类型的k张票!”说明:x是顾客姓名.y是日期.z是FlyFrom ...
- 【ZJOI 2016】旅行者
题意 http://uoj.ac/problem/184 题解 大概是神题. 网格图上跑最短路有一个经典的优化方式:分治分组跑最短路. 对于这道题,设矩形长为 \(n\),宽为 \(m\),则对 \( ...
- Summer training #9
A:树形DP 给出一棵树,但是它的边是有向边,选择一个城市,问最少调整多少条边的方向能使一个选中城市可以到达所有的点,输出最小的调整的边数,和对应的点 要改变的边的权值为1,不需要改变的边的权值为0, ...
- django 模型层(orm)05
目录 配置测试脚本 django ORM基本操作 增删改查 Django 终端打印SQL语句 13条基本查询操作 双下滑线查询 表查询 建表 一对多字段数据的增删改查 多对多字段数据的增删改查 基于对 ...