将每一列乘以 NumPy 数组中的数字

Multiplying each column by a number in a NumPy array

我想按以下顺序将 A 的列与 X 中的元素相乘:X 的第一个元素乘以 [=12= 的第一列], 第二个元素到第二列等等。

例如,给定:

import numpy as np

X=np.array([10.        ,  2.46421304,  4.99073939,  5.79902063,  0.        ]
A=np.array([[0, 1, 1, 1, 0],
       [1, 0, 1, 0, 1],
       [1, 1, 0, 1, 1],
       [1, 0, 1, 0, 1],
       [0, 1, 1, 1, 0]])

我要生产:

array([[0, 2.464, 4.991, 5.799, 0],
       [10, 0, 4.991, 0, 0],
       [10, 2.464, 0, 5.799, 0],
       [10, 0, 4.991, 0, 0],
       [0, 2.464, 4.991, 5.799, 0]])

您可以利用 numpy 中的广播来做:

result = A * X
print(result)

这给出了所需的输出(低至小的浮点错误):

[[ 0.          2.46421304  4.99073939  5.79902063  0.        ]
 [10.          0.          4.99073939  0.          0.        ]
 [10.          2.46421304  0.          5.79902063  0.        ]
 [10.          0.          4.99073939  0.          0.        ]
 [ 0.          2.46421304  4.99073939  5.79902063  0.        ]]