2017-06-08 108 views
0

我有6x2 numpy數組。我想從下一行的第一個元素中減去當前行的第二個元素並獲取新列。 目前我正在使用循環來做到這一點。 例如:減去當前行第二個元素從下一行第一個元素在numpy

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

切片和減 -

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]) 

因爲,我們只有兩列,另一種方式/技巧將是在扁平的版本使用differentiaton然後步入每其他元素從第二個元素開始 -

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

謝謝@Divakar – Dark

相關問題