从numpy中的下一行第一个元素中减去第二个元素的当前行

时间:2017-06-08 16:53:00

标签: python arrays numpy

我有6x2 numpy数组。我想从下一行第一个元素中减去第二个元素的当前行并获取新列。 目前我正在使用for循环来做到这一点。 例如:

from numpy import array
a = array([[1,3],
           [2,5],
           [6,7],
           [8,9],
           [5,6],
           [6,9]])
k = []
for i in range(a.shape[0]-1):
    k.append(a[i][1]-a[i+1][0])
array(k)

Output : [1, -1, -1, 4, 0]

如何使用numpy获得相同的输出?

1 个答案:

答案 0 :(得分:1)

切片和减法 -

a[1:,0] - a[:-1,1]

示例运行 -

In [303]: a
Out[303]: 
array([[1, 3],
       [2, 5],
       [6, 7],
       [8, 9],
       [5, 6],
       [6, 9]])

In [304]: a[1:,0] - a[:-1,1]
Out[304]: array([-1,  1,  1, -4,  0])

因为,我们只有两列,另一种方法/技巧是在展平版本上使用差异化,然后从第二个元素开始逐步进入每个其他元素 -

In [308]: np.diff(a.ravel())[1::2]
Out[308]: array([-1,  1,  1, -4,  0])