2017-03-21 18 views
1

の他のすべての要素を持つ1次元numpyの配列の各要素が減算同じ配列

np.array([a,b,c]) #where a,b and c are some integers 

以下の配列を考える私はこの

[(a-b),(a-c),(b-c)] #basically subtract each element in the array with every other element except for itself 

のような何かをすると、これはやや行列のようなものですが、 (a-a)のような何かをする必要はなく、基本的にはちょうど逆のような繰り返しのインスタンスです(b - a) or (c - b)は逆です(a - b) and (a - c)

これが製品の場合、np.kronのような利用可能な機能がいくつか用意されていますが、このような製品以外の操作はどのように処理するのですか?

私が持っている最も近いです:

(a[0] - np.choose([1,2],a)) 

が、これは基本的に私に(a-b)(a - c)それでも(b - c)遺骨を与えます。 提案がありますか?

答えて

1

triu_indices/tril_indicesとそれらの対ごとのインデックスを取得し、その後、単にインデックスと減算。したがって、実装は次のようになります -

r,c = np.triu_indices(a.size,1) # Input array : a 
out = a[r] - a[c] 

サンプル実行 -

In [159]: a = np.array([3,5,6]) 

In [160]: r,c = np.triu_indices(a.size,1) 

In [161]: a[r] - a[c] 
Out[161]: array([-2, -3, -1]) 

In [162]: a[0] - a[1] 
Out[162]: -2 

In [163]: a[0] - a[2] 
Out[163]: -3 

In [164]: a[1] - a[2] 
Out[164]: -1 
+0

ありがとうございました。驚くばかり。 –