、+
の代わりに*
または|
の代わりに&
を使用する任意の利点/規則はありますか?これらは常に同等ですか?&vs *と| <em>ブール</em>配列の比較を行う場合VS +
(これらはドキュメントである場合、リンクはおそらく許容答えであるだろうが、「numpyのアンパサンド」と「numpyの要素ごとのブール比較」の私の素朴な検索は、関連する何かを得られなかった)
、+
の代わりに*
または|
の代わりに&
を使用する任意の利点/規則はありますか?これらは常に同等ですか?&vs *と| <em>ブール</em>配列の比較を行う場合VS +
(これらはドキュメントである場合、リンクはおそらく許容答えであるだろうが、「numpyのアンパサンド」と「numpyの要素ごとのブール比較」の私の素朴な検索は、関連する何かを得られなかった)
numpyのは&
および|
は、np.bitwise_and
およびnp.bitwise_or
に相当します。 np.bitwise_xor
には^
を使用することもできます。これはすべてndarrayドキュメントのArithmetic and comparison operationsセクションに記載されています。 np.logical_and
,np.logical_or
およびnp.logical_xor
のufuncsもあります。
アレイがすべてdtype bool
の場合、違いはありません。私は個人的にあなたがbool
DTYPEについて厳密でない場合には、このようなトラブルにあなたを得ることができるにもかかわらず、&
と|
方に傾く:
In [30]: np.array(2) & np.array(1)
Out[30]: 0
場合、誰かに疑問に思った:操作は同じ速度を持っており、それゆえありませんどちらを選ぶかは関係ありません。私に関する限り
In [1]: import numpy as np
In [2]: a = np.random.randn(1000)>0
In [3]: b = np.random.randn(1000)>0
In [4]: %timeit a*b
100000 loops, best of 3: 2.89 us per loop
In [5]: %timeit a&b
100000 loops, best of 3: 2.87 us per loop
In [6]: %timeit a+b
100000 loops, best of 3: 2.69 us per loop
In [7]: %timeit a|b
100000 loops, best of 3: 2.62 us per loop
、私は私が(場合には、読者は、問題の配列のDTYPEを忘れてしまった)ブーリアン演算に興味があることを明示するために&
と|
を使用しています。