2つ以上のnumpy配列の_logical_and
_を使用しようとしています。 numpyに関数logical_and()
があることは知っていますが、単純な演算子_&
_は同じ結果を返し、潜在的に使いやすいことがわかりました。
たとえば、3つのnumpy配列a、b、およびcについて考えてみます。 np.logical_and(a, np.logical_and(b,c))
は_a & b & c
_と同等ですか?
それらが(多かれ少なかれ)同等である場合、logical_and()
を使用する利点は何ですか?
@ user1121588はコメントでこれのほとんどに答えました、しかし完全に答えるために...
"Bitwise and"(&
)はブール配列のlogical_and
とほとんど同じように動作しますが、logical_and
を使用するだけでなく意図も伝えず、誤解を招く可能性があります。重要なケース(おそらく、パックされた配列またはスパース配列)での回答。
複数の配列でlogical_andを使用するには、次のようにします。
np.logical_and.reduce([a, b, c])
ここで、引数は、一緒にlogical_and
したい数の配列のリストです。それらはすべて同じ形でなければなりません。
NumPyブール配列で_&
_の代わりに_logical_and
_を使用できるという公式の確認をグーグルで調べていて、1つ見つかりました NumPy v1.15マニュアルで :
ブール引数があることがわかっている場合は、NumPyのビット演算子を使用する必要はありませんが、
z = (x > 1) & (x < 2)
のように括弧に注意してください。 _logical_and
_および_logical_or
_のNumPy演算子形式がないことは、Pythonの設計の残念な結果です。
したがって、_~
_には_logical_not
_を使用し、_|
_には_logical_or
_を使用することもできます。