2017-08-16 3 views
0

私はpython 2.7.13を使用していますが、numpyで配列スライスを使用しているときに見ている動作に困惑しています。numpyを使用しています 'where'は配列のサブセットです

import numpy as np 
a=np.array([1,1,2,3,4,5,6,7]) 
print a 
print a[1:] 
print a[1:] > 3 

print np.where(a[1:] > 1) 

私は最終出力[2 3 4 5 6 7 8]スライス内で見出された配列の、すなわちインデックスを参照されたいだろうと期待していました。

私の目標は、最初の要素を除いて、配列のすべての要素にブールマスクを適用することでした。次に、インデックス配列の最初の 'True'値に対応する配列の値を取得します。これは可能ですか?

+0

'どこで' a [1:]> 1'が '真'であるかが分かります。 'a'で何もしません。 – hpaulj

答えて

1

私はこれがあなたの問題を解決推測:最初elememntをスキップして、あなたの場合は

import numpy as np 
a=np.array([1,1,2,3,4,5,6,7]) 
b=a[1:] 
print np.where(b > 1) 

print文は、配列aの要素のインデックスを返します。 配列内のインデックスを取得するaprint np.where(a>1) これが役立つことを願っています。

3

あなたのコードは、あなたがしたいことをまさにやっています。 [1:]をスライスすると、np.array([1,2,3,4,5,6,7])が表示されます。私が得た出力:

(array([1, 2, 3, 4, 5, 6], dtype=int64),) 

を使用すると、指定したのスライスに、あなたの2の指標を与える3、4、5、6、7れます。

関連する問題