python - 如何在 Python 中使用 numpy 将 3D 矩阵和 2D 矩阵相乘?

标签 python arrays numpy matrix

我的 3d 数组的形状为 (3, 2, 3),我的 2d 数组的形状为 (2, 3)。我想要进行的乘法是 np.dot(2d, 3d[i,:,:].T) 因此它应该返回形状为 (3, 2, 2) 的结果。我可以编写一个循环,但这不是最有效的方法,我读过有一个名为 np.tensordot 的操作,但它适合我的情况吗?如果是的话,它将如何运作?

最佳答案

我们可以使用np.einsum -

# a, b are 3D and 2D arrays respectively
np.einsum('ijk,lk->ilj', a, b)

或者,在 Python3.x 上使用 np.matmul/@-operator -

np.matmul(a,b.T[None]).swapaxes(1,2)

关于python - 如何在 Python 中使用 numpy 将 3D 矩阵和 2D 矩阵相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58879077/

相关文章:

python - 在 numpy 中以相反的顺序索引索引 0

python - 如何将 4D tensorflow reshape 为 2D

python - Python 如何在没有 %s 的情况下进行字符串替换?

python - 从数据框列中获取数据作为元组列表

javascript - 能够查询数组中的特定索引吗? Mongoose

c - 为什么我的数组打印出副本?

python - 传递给模块 __init__() 的隐式参数是什么?

python - yaml.load,将 dict 键强制转换为字符串

sql - 从数组中删除一个非唯一值

python - 如何将图像的每一帧的二维数组写入csv?