NumPy中array和matrix的区别:
array的优势就是不仅仅表示二维,还能表示3、4、5…维,而且在大部分Python程序里,array也是更常用的。
matrix的优势就是相对简单的运算符号,比如两个矩阵相乘,就是用符号*,但是array相乘不能这么用,得用方法.dot()
两者区别:
-
对应元素相乘:matrix可以用np.multiply(X2,X1),array直接X1*X2
-
矩阵相乘:matrix直接X1*X2;
array可以X1.dot(X2) 或 np.dot(X1, X2) 或者 X1@X2,np.matmul(X1, X2)。
区别请参考博文https://blog.csdn.net/Jasminexjf/article/details/79888350或者官方文档。
推荐矩阵相乘使用@,简单明了。
也就是说* ,在 np.array 中重载为元素乘法,在 np.matrix 中重载为矩阵乘法
矢量化(vectorization)
数组很重要,因为它使你不用编写循环即可对数据执行批量运算。这通常叫做矢量化(vectorization)。大小相等的数组之间的任何算术都会将运算应用到元素级。
- 数组与数组的运算
相同大小数组的运算应用在每个对应元素上
>>> a = np.arange(6).reshape(2,3)
array([[0, 1, 2],
[3, 4, 5]])
>>>a * a
array([[ 0, 1, 4],
[ 9, 16, 25]])
- 数组与标量的算术运算
将标量"广播(broadcast)"到各个元素
>>>a + 2
array([[2, 3, 4],
[5, 6, 7]])
注:标量(scalar):又称数量、纯量。与之对立的量叫矢量。
网友评论