Skip to main content
 首页 » 编程设计

python之Numpy:对行求和

2025年05月04日12zhwl

我想弄清楚如何对数组的每两行求和。 EG 在此示例中将 a 转换为 b:

a=array([[ 0,  1,  2,  3], 
       [ 4,  5,  6,  7], 
       [ 8,  9, 10, 11], 
       [12, 13, 14, 15]]) 
 
b=array([[ 4,  6,  8, 10], 
       [20, 22, 24, 26]]) 

当前代码看起来像这样:

b=[] 
for num in range(len(a)/2): 
    b.append(a[num*2]+a[num*2+1]) 

肯定有更快的方法。感谢您的宝贵时间。

找到的答案为:

b=a[::2,:]+a[1::2,:] 

这实际上帮助我扩展了如何跳过前两行的次要问题。

>>> a=np.arange(24).reshape(6,-1) 
>>> a 
array([[ 0,  1,  2,  3], 
       [ 4,  5,  6,  7], 
       [ 8,  9, 10, 11], 
       [12, 13, 14, 15], 
       [16, 17, 18, 19], 
       [20, 21, 22, 23]]) 
>>> b=np.vstack((a[:2],a[2::2,:]+a[3::2,:])) 
>>> b 
array([[ 0,  1,  2,  3], 
       [ 4,  5,  6,  7], 
       [20, 22, 24, 26], 
       [36, 38, 40, 42]]) 

非常感谢您的帮助。

请您参考如下方法:

切片来拯救!我们只需要指定切片的步幅,一切就绪。

b = a[::2,:] + a[1::2,:] 

演示:

>>> from numpy import * 
>>> a=array([[ 0,  1,  2,  3], 
...        [ 4,  5,  6,  7], 
...        [ 8,  9, 10, 11], 
...        [12, 13, 14, 15]]) 
>>> 
>>> a[::2,:] 
array([[ 0,  1,  2,  3], 
       [ 8,  9, 10, 11]]) 
>>> 
>>> a[1::2,:] 
array([[ 4,  5,  6,  7], 
       [12, 13, 14, 15]]) 
>>> 
>>> a[::2,:] + a[1::2,:] 
array([[ 4,  6,  8, 10], 
       [20, 22, 24, 26]])