将numpy 2d数组与1d数组相乘

时间:2017-06-05 00:11:36

标签: python arrays numpy

我有一个numpy 2d数组:

[[1,1,1],
[1,1,1],
[1,1,1],
[1,1,1]]

当2d数组的行长度小于1d数组的长度时,如何将索引从上到下与1d数组中的相应值相乘?例如,乘以:

[10, 20, 30, 40]

得到这个:

 [[10, 10, 10],
 [20, 20, 20],
 [30, 30, 30]
 [40, 40, 40]]

可能是重复,但我无法找到我想要的确切内容。提前谢谢。

1 个答案:

答案 0 :(得分:1)

*中的{p> numpy进行逐元素乘法,例如将1d数组乘以另一个1d数组:

In [52]: np.array([3,4,5]) * np.array([1,2,3])
Out[52]: array([ 3,  8, 15])

当你将2d数组乘以1d数组时,对于2d数组的每一行都会发生同样的事情:

In [53]: np.array([[3,4,5],[4,5,6]]) * np.array([1,2,3])
Out[53]:
array([[ 3,  8, 15],
       [ 4, 10, 18]])

对于您的具体示例:

In [66]: ones = np.ones(12, dtype=np.int).reshape(4,3)

In [67]: a = np.array([10, 20, 30, 40])

In [68]: (ones.T * a).T
Out[68]:
array([[10, 10, 10],
       [20, 20, 20],
       [30, 30, 30],
       [40, 40, 40]])