二维阵列与一维阵列相乘

2024-04-28 07:57:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy 2d阵列:

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

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

^{pr2}$

要得到这个:

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

可能是复制品,但我找不到我要找的东西。提前谢谢。在


Tags: numpy数组复制品pr2
1条回答
网友
1楼 · 发布于 2024-04-28 07:57:27

numpy中的*执行元素级乘法,例如将1d数组乘以另一个1d数组:

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

当你把一个二维数组乘以一个一维数组时,二维数组的每一行都会发生同样的事情:

^{pr2}$

对于您的具体例子:

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]])

相关问题 更多 >