在numpy数组中分别对所有偶数和奇数列求和

时间:2018-01-23 11:26:30

标签: python arrays numpy

我有一个像这样的numpy数组:

<class 'numpy.ndarray'>
[[-18.29750213   0.1          -0.1         0.4          -0.8        ]
 [-18.20350213   0.7          -0.2         0.1          -0.3        ]
 [-18.11050213   0.5          -0.6         0.2          -0.1        ]
 ..., 
 [  9.49249787   0.5          -0.6         0.2          -0.2        ]
 [  9.58649787   0.3          -0.3         0.7          -0.8        ]
 [  9.67949787   0.2          -0.6         0.5          -0.1        ]]

我试图为每一行分别添加所有偶数和奇数列,也就是说,最后我希望得到一个像这样的表:

-18.29750213 0.5(i.e. 0.1+0.4) -0.9(i.e. -.1-.8)
-18.20350213 0.8(i.e. 0.7+0.1) -0.5(i.e. -.2-.3)
-18.11050213 0.7(i.e. 0.5+0.2) -0.7(i.e. -.6-.1)
...

虽然我可以将列号分隔为lines[:,::2]lines[:,1::2]我可以添加它们,即sum(lines[:2,::2])sum(lines[:,1::2])现在正在运行:

d_dn = sum(lines[:,::2])
d_up = sum(lines[:,1::2])
print(lines[:,0].size)
print(d_dn.size)
print(d_up.size)

正在给予:

301
10
9

1 个答案:

答案 0 :(得分:1)

只需调用np.sum并传递轴参数即可。之后,column_stack将这些碎片放在一起。

i = arr[:, [0]]
j = arr[:, 1::2].sum(1)
k = arr[:, 2::2].sum(1)

np.column_stack((i, j, k))

array([[-18.29750213,   0.5       ,  -0.9       ],
       [-18.20350213,   0.8       ,  -0.5       ],
       [-18.11050213,   0.7       ,  -0.7       ],
       [  9.49249787,   0.7       ,  -0.8       ],
       [  9.58649787,   1.        ,  -1.1       ],
       [  9.67949787,   0.7       ,  -0.7       ]])