人们使用 matrix 而不是 array 的一个常见原因是 a * b 将执行矩阵乘法(而不是成对乘法,就像标准 array 一样) . 但是,您现在可以使用闪亮的新矩阵乘法运算符 @ 来使用标准数组轻松执行矩阵乘法:
a = np.arange(2*2).reshape(2,2)
b = np.arange(2*2, 2*2*2).reshape(2,2)
print('a\n%s\n' % a)
print('b\n%s\n' % b)
print('a * b (pairwise multiplication)\n%s\n' % (a * b))
print('a @ b (matrix multiplication)\n%s\n' % (a @ b))
输出:
a
[[0 1]
[2 3]]
b
[[4 5]
[6 7]]
a * b (pairwise multiplication)
[[ 0 5]
[12 21]]
a @ b (matrix multiplication)
[[ 6 7]
[26 31]]
2 回答
跳过
matrix
并直接使用:加速创建此矩阵的最佳方法是完全跳过使用
matrix
类,只需使用np.zeros
:跳过使用
matrix
可以获得10倍的加速:numpy.matrix has been deprecated:
Edit :Paul Panzer在评论中链接了一个很好的discussion about the reasons behind matrix's deprecation .
人们使用
matrix
而不是array
的一个常见原因是a * b
将执行矩阵乘法(而不是成对乘法,就像标准array
一样) . 但是,您现在可以使用闪亮的新矩阵乘法运算符@
来使用标准数组轻松执行矩阵乘法:输出: