Python 将数组的每个数字与其对齐的矩阵行相乘(单位:numpy)?

Python 将数组的每个数字与其对齐的矩阵行相乘(单位:numpy)?,python,numpy,Python,Numpy,假设我有一个arr=(n项数组)和一个矩阵mat=nxm矩阵。我想将arr的每个项目与其矩阵mat的对齐行相乘。我如何在numpy做到这一点?您可以使用广播: M = np.arange(1, 13).reshape(3, 4) print M # [[ 1 2 3 4] # [ 5 6 7 8] # [ 9 10 11 12]] a = np.arange(1, 4) print a # [1, 2, 3] # we broadcast a (3, 1) vector ag

假设我有一个arr=(n项数组)和一个矩阵mat=nxm矩阵。我想将arr的每个项目与其矩阵mat的对齐行相乘。我如何在numpy做到这一点?

您可以使用广播:

M = np.arange(1, 13).reshape(3, 4)
print M
# [[ 1  2  3  4]
#  [ 5  6  7  8]
#  [ 9 10 11 12]]

a = np.arange(1, 4)
print a
# [1, 2, 3]

# we broadcast a (3, 1) vector against a (3, 4) matrix
print a[...,None].shape, M.shape
# (3, 1) (3, 4)

print a[..., None] * M
# [[ 1  2  3  4]
#  [10 12 14 16]
#  [27 30 33 36]]

你能给演示输入和输出澄清一下吗?你是说矩阵与数组相乘吗?(最终结果应该是什么维度?)。您可以使用
arr[…,None]*mat
(或
arr[None,…]*mat
沿另一个轴相乘)