numpy的向量 ≠ \neq =矩阵
在matlab中向量与矩阵的概念是模糊的,比如一个51的向量,我们也可以认为是一个51的矩阵,它可以直接与矩阵做乘法。但是在python中向量与矩阵是两码事,例如:
a = np.array([1,2,3,4,5])
a.shape = (5,)
可以看到a的shape是(5,)所谓的逗号表示它只有当前一个维度,逗号以后的维度的信息是不存在的。
b = np.ones([5,1])
b.shape = (5,1)
而b的shape是(5,1),那么它是有两个维度的,不再是一个向量而是一个矩阵了。
如果我们想要把向量变为矩阵,可以改变它的shape:
a = a.reshape(5,1)
这个时候,a就变为一个矩阵而不再是一个向量了。
numpy中的矩阵乘法
aa = np.ones([5,5])
bb = np.ones([5,1])
cc = np.dot(aa,bb)
dd = aa*bb
不可以像matlab一样直接采用乘法符号*,而需要使用np.dot。
print(cc)
[[5.]
[5.]
[5.]
[5.]
[5.]]
>>> print(dd)
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]