46

配列内のaより大きくbより小さいすべての要素のインデックスを見つけようとしています。これはおそらく私の構文の問題ですが、これは機能しません。

numpy.where((my_array > a) and (my_array < b))

これをどのように修正すればよいですか?それともそれを行うためのより良い方法はありますか?

ありがとう!

4

1 に答える 1

76

次の 2 つの方法があります。

In [1]: my_array = arange(10)

In [2]: where((my_array > 3) & (my_array < 7))
Out[2]: (array([4, 5, 6]),)

In [3]: where(logical_and(my_array > 3, my_array < 7))
Out[3]: (array([4, 5, 6]),)

最初のもの ( に置き換えます) については、and括弧&を適切に追加するように注意してください: &比較演算子よりも優先度が高くなります。も使用できますが*、お勧めしません。ハックであり、読み取り可能なコードにはなりません。

In [4]: where((my_array > 3) * (my_array < 7))
Out[4]: (array([4, 5, 6]),)
于 2012-11-27T17:19:36.017 に答える