在 numpy 中,我有一个 N 3x3 矩阵的数组。这是我如何存储它们的示例(我正在抽象内容):
N = 10
matrices = np.ones((N, 3, 3))
我还有一个 3 向量数组,这是一个例子:
vectors = np.ones((N, 3))
我似乎无法弄清楚如何通过 numpy 将它们相乘,从而实现这样的目标:
result_vectors = []
for matrix, vector in zip(matrices, vectors):
result_vectors.append(matrix @ vector)
与result_vector
的形状(转换为数组后)是(N, 3)
。
然而,由于速度原因,列表实现是不可能的。
我尝试过使用 np.dot 进行各种换位,但最终结果的形状不正确。
Use np.einsum https://docs.scipy.org/doc/numpy/reference/generated/numpy.einsum.html -
np.einsum('ijk,ik->ij',matrices,vectors)
Steps :
1) 保持第一根轴对齐。
2) 对输入数组中的最后一个轴进行求和归约。
3)让剩余的轴(第二个轴从matrices
) 逐元素相乘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)