为什么numpy
可以将2x2
矩阵乘以1x2
行向量?
import numpy as np I = np.array([[1.0, 0.0], [0.0, 1.0]]) x = np.array([2.0,3.0]) In: I * x Out: array([[ 2., 0.], [ 0., 3.]])
转置x
也没有任何意义.行向量保持行向量?
In: x.T Out: array([ 2., 3.])
从数学的角度来看,表示非常混乱.
Numpy数组不是向量.或者重要的矩阵.他们是阵列.
它们可用于表示向量,矩阵,张量或任何您想要的东西.然而,numpy的天才是代表数组,让用户决定它们的含义.
在数组上定义的一个操作是(逐项)乘法.此外,广播允许您通过在缺失的维度中"扩展"它来操作不同形状的阵列,因此您的乘法实际上是(逐项)乘法:
[[1.0, 0.0], [0.0, 1.0]] * [[2.0, 2.0], [3.0, 3.0]]
如果你想使用点积,在matricial意义上,你应该使用.dot
这样做的方法:将其输入解释为向量/矩阵/张量,并做一个点积.