目前我使用
Na = (3, 2, 4)
Nb = Na[1:]
A = np.arange(np.prod(Na)).reshape(Na)
b = np.arange(np.prod(Nb)).reshape(Nb)
我想计算:
r = np.empty((A.shape[0], A.shape[2])
for i in range(A.shape[2]):
r[:, i] = np.dot(A[:, :, i], b[:, i])
单词:A是“4个矩阵的堆栈”(形状(3,2)),即3d数组,b是“4个向量的堆栈”(形状(3,)),即2d - 阵列。期望的结果是“4个矩阵矢量乘积的堆栈”,即一堆矢量,即同样是2d阵列(形状(3,4))。
我对np.einsum和np.tensordot有一个中等深度的外观,但我用这些构建的任何解决方案至少与我的循环解决方案一样长且不易读。
但是我觉得这个简单的问题应该有一个单行。
答案 0 :(得分:5)