np.array([1,2,3])这种不是矩阵!
import numpy as np
a = np.array([1,2,3])
a
array([1, 2, 3])
a.shape #a不是矩阵, 因为a.T.shape仍然是(3,)
(3,)
b = a.reshape(1,3) #把a转化为矩阵
b
array([[1, 2, 3]])
b.shape
(1, 3)
a@a
14
b@b.T
array([[14]])
b.T@b
array([[1, 2, 3],
[2, 4, 6],
[3, 6, 9]])
a.T
array([1, 2, 3])
c = np.mat([1,2,3]) #相比np.array(), np.mat()得到的直接是矩阵
c.shape
(1, 3)
差异罗列
- 上面所说的 np.array([1,2,3])这种不是矩阵np.array([[1,2,3]])或np.mat([1,2,3])才算
np.array 大多数操作符号都是element-wise的, 除了@
可以表示叉乘(python>=3.5) , np.array要表示叉乘需要使用函数np.dot(A, B) - 两者都有 .T 操作以返回转置矩阵, 但是np.mat多了.H(共轭转置)和.I(逆矩阵)
- np.array 可以表示超过1~n维的数据, 而np.mat只能用于二维
- np.array 取第一列A[:, 0] 返回的不是矩阵, shape是没有列的维度的(例如
(3,) 而不是(3,1)
), 而np.mat则是列向量形式的矩阵(符合预期) - 两者可以互相用np.asmatrix()或np.asarray()互相转换
Reference:
[1] https://stackoverflow.com/questions/4151128/what-are-the-differences-between-numpy-arrays-and-matrices-which-one-should-i-u