python - Numpy:对行求和

标签 python multidimensional-array numpy

我想弄清楚如何对数组的每两行求和。 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]])

关于python - Numpy:对行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404150/

相关文章:

python - 从 python 数组中选择行

python - 使用 SciPy stft 函数指定短时傅里叶变换段中的样本数

python - 在 urllib2.request() 调用中保持连接

Python: 'curl' 不是内部或外部命令,也不是可运行的程序或批处理文件

python - Pandas 优化 - 如何处理两列中的 Pandas 时间序列数据并获取列之间的每小时数据

c - 二维数组和指针有什么关系?

php - 访问多维数组中的元素,php

java - java中如何从多维数组中删除空元素

Python:如何使用timeit?

Python3、Numpy——矩阵元素的矩阵