我在numpy中乘以矩阵有一个特定的问题。这是一个例子:
P=np.arange(30).reshape((-1,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
我想将每一行乘以其转置,以便为每一行获得一个 3x3 矩阵,例如第一行:
P[0]*P[0][:,np.newaxis]
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
并将结果存储在 3-d 矩阵 M 中:
M=np.zeros((10,3,3))
for i in range(10):
M[i] = P[i]*P[i][:,np.newaxis]
我认为可能有一种方法可以在不循环的情况下做到这一点,也许使用张量点,但找不到它。
有人有想法吗?