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