Numpy - 带有 2d 数组的多个 3d 数组

Dan*_*elY 4 python numpy matrix

我正在尝试以下操作:

给定一个矩阵 A (x, y ,3) 和另一个矩阵 B (3, 3),我想返回一个 (x, y, 3) 矩阵,其中 A 的第三维乘以 B 的值 (与 RGB 图像转换为灰色时类似,只是那些“RGB”值乘以矩阵而不是标量)...

这是我尝试过的:

np.multiply(B, A)
np.einsum('ijk,jl->ilk', B, A)
np.einsum('ijk,jl->ilk', A, B)
Run Code Online (Sandbox Code Playgroud)

所有这些都因尺寸未对齐而失败。

我缺少什么?

Div*_*kar 5

您可以使用np.tensordot-

np.tensordot(A,B,axes=((2),(1)))
Run Code Online (Sandbox Code Playgroud)

相关帖子了解一下tensordot

einsum相当于 -

np.einsum('ijk,lk->ijl', A, B)
Run Code Online (Sandbox Code Playgroud)

我们也可以使用A.dot(B.T),但这会在底层循环。所以,可能不是最优选的,但它是一个紧凑的解决方案,