Skip to main content
 首页 » 编程设计

python之将 NumPy 数组乘以标量

2025年05月04日14www_RR

我有一个形状为 (2,76020,2) 的 NumPy 数组。它基本上由两列组成,每列包含 76020 行,每行有两个条目。

我想将每列乘以不同的权重,例如 1 列乘以 3 和 2 列乘以 5。例如:

m =  
[3,4][5,8] 
[1,2][2,2] 
 
a = [3,5] 

我要:

[9,12][25,40] 
[3,6][10,10] 

我以为我可以只乘以 m*a,但结果却是:

[9,20][15,40] 
[3,10][6,10] 

这个乘法怎么写?

请您参考如下方法:

是broadcasting的问题: 您必须对齐要乘以的维度,这里是第二个:

m = array( 
[[[3,4],[5,8]], 
[[1,2],[2,2]]]) 
a = array([3,5]) 
print(a[None,:,None].shape, m*a[None,:,None]) 
""" 
(1, 2, 1) 
 
[[[ 9 12] 
  [25 40]] 
 
 [[ 3  6] 
  [10 10]]] 
"""