or
2 つのスカラーの間にある場合は明確ですが、正しいベクトルの一般化は何ですか? ifx == array([0, 0])
とy == array([0,1])
, はx or y
(1) False である必要があります。なぜなら、or
組み合わせたすべてのペアワイズ項が True であるとは限らないからです (2) True です。なぜなら、少なくとも 1 つのペアワイズor
結果が true だからです (3) array([0, 1])
, なぜなら、それは an のペアワイズ結果だからですor
(4) array([0, 0])
、空でないリストは真であるため[0,0] or [0,1]
に返されるため、 s はそうあるべきか?[0,0]
array
|
ここで使用して、ビットごとの問題として扱うことができます。
>>> import numpy as np
>>> vec = np.arange(10)
>>> vec[(vec == 2) | (vec == 7)]
array([2, 7])
numpy
ベクトル化された論理和を明示的に使用します。
>>> np.logical_or(vec==3, vec==5)
array([False, False, False, True, False, True, False, False, False, False], dtype=bool)
>>> vec[np.logical_or(vec==3, vec==5)]
array([3, 5])
またはin1d
、ここでははるかに効率的な を使用します。
>>> np.in1d(vec, [2, 7])
array([False, False, True, False, False, False, False, True, False, False], dtype=bool)
>>> vec[np.in1d(vec, [2, 7])]
array([2, 7])