为什么在 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]]
如果你想使用点积,在矩阵意义上,你应该使用 .dot
方法,它就是这样做的:将它的输入解释为向量/矩阵/张量,然后做一个点积。
关于python - Numpy 列和行向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179413/