2017-06-08 17 views
0

私は6x2のnumpyの配列を持っています。私は、次の行の最初の要素から現在の行の2番目の要素を減算し、新しい列を取得します。 現在私はそれを行うためにforループを使用しています。 例:現在の行を減算する次の行から2番目の要素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使用することで、その後のすべてへのステップとなる別の方法を2つの列を持っている、ので、第2要素から始まる他の要素 -

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

ありがとう@Divakar – Dark

関連する問題