【发布时间】:2013-10-24 10:34:47
【问题描述】:
我有一个 5x5 的数组,我正在尝试将一行的转置矩阵与另一行相乘。
import numpy as np
a = np.array([1, 4, 6, 4, 1])
b = np.array([-1, -2, 0, 2, 1])
c = np.array([-1, 2, 0, -2, 1])
d = np.array([-1, 0, 2, 0, -1])
e = np.array([1, -4, 6, -4, 1])
f = np.vstack([a, b, c, d, e])
result = np.dot(f[1, :].T, f[1, :])
我认为这会起作用,但显然
f[1, :].T
最终变成
[-1, -2, 0, 2, 1]
而不是
[[-1]
[-2]
[ 0]
[ 2]
[ 1]]
因此np.dot 将其视为真正的点积,而不是进行矩阵乘法。
我发现列表切片,其中一个索引是整数,所有其他索引都是 :s 将维度减少一,所以 f[1, :] 的形状不是 (1, 5) 而是 (5,),所以转置它确实没有。
我已经能够使用f[1, :].reshape((1, 5)) 让它工作,但是有没有更好的方法呢?我是否错过了一种无需重塑即可获得转置的简单方法?
【问题讨论】:
标签: python arrays numpy matrix