重复numpy向量矩阵向量乘法

  • 本文关键字:向量 numpy 重复 numpy
  • 更新时间 :
  • 英文 :


我有一组向量(n(、另一组向量和一组3x3 2D阵列(T(。

n = np.array([
[[1, 2, 3]],
[[2, 2, 3]],
[[3, 2, 3]],
[[4, 2, 3]],
[[5, 2, 3]],
[[6, 2, 3]]
])
s = np.array([
[[1, 1, 5]],
[[2, 2, 5]],
[[3, 3, 5]],
[[4, 4, 5]],
[[5, 5, 5]],
[[6, 6, 5]]
])
T = np.array([
[[1, 2, 3],
[1, 2, 3],
[2, 2, 3]],
[[2, 2, 3],
[3, 2, 3],
[4, 2, 3]],
[[3, 2, 3],
[5, 2, 3],
[6, 2, 3]],
[[4, 2, 3],
[7, 2, 3],
[8, 2, 3]]
])

现在,我当前的代码循环通过n、s,然后是T:

result = np.array(n.shape[0], s.shape[0], T.shape[0])
for i in range(n.shape[0]):
for j in range(s.shape[0]):
for k in range(T.shape[0]):
result[i][j][k] = np.sum(n[i] * T[k] * s[j].T)

我试着使用np.apply_along_axis,但它需要一个1D数组来操作。理想情况下,我正在努力找出一个不需要任何for循环的解决方案。

我试着让np.tensordot()工作(并在两次操作中完成(,但到目前为止没有成功。

有人想用一种更"愚蠢"的方式来做这件事吗?

np.einsum('imn,jnm,kmn->ijk', n, s, T)

最新更新