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)对. 示例展示: 由上面的示例展示 ...
随机推荐
- Delphi CreateFile函数
- deep_learning_cross_entropy
交叉熵损失函数 交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在 ...
- 下拉菜单 Spinner 简单纯字符串版
下拉菜单 Spinner 简单纯字符串版 public class MainActivity extends Activity implements AdapterView.OnItemSelecte ...
- 3.java并发包
1.java并发包介绍 JDK5.0 以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程并发编程的,充分利用了现代多处理器 和多核心系统的功 ...
- Acwing 197. 阶乘分解
给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...
- windows 环境下基于Python 的GDAL 安装
最近由于需要利用pytho处理地理空间数据,但是python本身并没有访问和处理地理空间数据的包,只能借助于GDAL(Geospatial Data Abstraction Library)来进行访问 ...
- Linux/Centos查看进程占用内存大小的几种方法总结
1.命令行输入top回车,然后按下大写M按照memory排序,按下大写P按照CPU排序. 2. ps -ef | grep "进程名" ps -e -o 'pid,comm ...
- nginx之"/"结尾
一.配置127.0.0.1:8081的tomcat下的文件: 1.ROOT/a.html : this is ROOT page 2.ROOT/testa.html : nihao 3.ROOT/in ...
- .Net界面开发必备!DevExpress Blazor UI全新组件助力界面开发
行业领先的.NET界面控件DevExpress 正式发布了v19.1版本,DevExpress UI for Blazor/ Razor组件附带7个用户界面组件(包括Data Grid和Pivot G ...
- 1 FBV与CBV,前后端分离(初识),postman
yuan的Blog:https://www.cnblogs.com/yuanchenqi/articles/8715364.html alice的Blog:https://www.cnblogs.co ...