两个不同形状的numpy数组的元素乘

qlckcl4x  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(107)

我有两个numpy数组FC,它们的维数分别为NxMMxB。我如何以有效的方式得到一个元素为Result[n,m,b] = F[n,m]*C[m,b],维度为NxMxB的矩阵?

nue99wik

nue99wik1#

虽然@Nick奥德尔评论的解决方案有效且快速,但它可能不是很可读。另一种选择是使用numpy.einsum,它允许您明确地声明哪些维度必须相乘,哪些维度必须求和。就你的情况来说

import numpy as np

N = 20
M = 40
B = 10

F = np.random.rand(N,M)
C = np.random.rand(M,B)

Result = np.einsum('nm,mb->nmb', F, C) 

print(Result.shape) # (20,40,10)

'nm,mb->nmb'是指:

  • nm:第一矩阵具有分别带有下标nm的维度,
  • mb:第二矩阵具有分别带有下标mb的维数,
  • -->nmb:乘以n x m x b,不对任何下标求和。

相关问题