【发布时间】:2015-03-06 04:42:30
【问题描述】:
我正在扩展旨在对 2 个向量执行功能的代码,以便它处理 2 个向量数组。我使用numpy.dot 来获取两个 3x3 矩阵的乘积。现在我想用一组 3x3 矩阵来做到这一点。我无法弄清楚如何使用numpy.einsum 做到这一点,但我认为这就是我所需要的,我只是在努力理解它是如何工作的。
这是我想要使用循环的示例。有没有办法在没有循环的情况下做到这一点?
>>> import numpy as np
>>> m = np.arange(27).reshape(3,3,3)
>>> print m
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]]])
>>> m2 = np.zeros(m.shape)
>>> for i in length(m):
m2[i] = np.dot(m[i],m[i])
>>> print m2
array([[[ 15., 18., 21.],
[ 42., 54., 66.],
[ 69., 90., 111.]],
[[ 366., 396., 426.],
[ 474., 513., 552.],
[ 582., 630., 678.]],
[[ 1203., 1260., 1317.],
[ 1392., 1458., 1524.],
[ 1581., 1656., 1731.]]])
【问题讨论】: