【发布时间】:2019-01-08 16:26:18
【问题描述】:
我正在尝试通过像x * x^T 这样的矩阵乘法,从大小为 2 的向量 x 创建一个 2x2 数组:
>>> x = np.array([2, 2])
>>> x
array([2, 2])
>>> np.matmul(x,x.T)
8
如您所见,这失败了。我想出了这个解决方案:
>>> m = np.matrix(x)
>>> m
matrix([[2, 2]])
>>> m.T
matrix([[2],
[2]])
>>> np.matmul(m.T, m)
matrix([[4, 4],
[4, 4]])
这实现了我想要的。但是有没有更好的方法来做到这一点,最好不要使用np.matrix?
编辑:由于问题之外的上下文,不能创建 2x1 向量。
【问题讨论】:
-
np.outer(x, x)? -
您实际上并不需要使用
matrix,但您需要有一个可以为您提供所需结果形状的形状。x = np.array([[2, 2]])为您提供(1, 2)的形状,您可以将其与np.matmul(x.T,x)相乘 -
请注意,这里并没有真正的“2x1 向量”,而是像
x.shape这样的一维向量返回(2,)