x
をNumPy配列とします。次のようになります。
(x > 1) and (x < 3)
次のエラーメッセージが表示されます:
ValueError: 複数の要素を持つ配列の真理値があいまいです。a.any() または a.all() を使用してください。
これを修正するにはどうすればいいでしょうか?
ベストアンサー1
a
および がb
ブール NumPy 配列の場合、この&
演算はそれらの要素ごとの論理積を返します。
a & b
これはブール配列を返します。これを単一のブール値にするには、次のいずれかを使用します。
(a & b).any()
または
(a & b).all()
注意:a
および が非ブール配列b
である場合は、代わりにまたは を検討してください。(a - b).any()
(a - b).all()
根拠
NumPy 開発者は、ブール値のコンテキストで配列を評価するための一般的に理解されている方法は 1 つもないと感じていました。つまり、任意の要素が であるTrue
かどうか、すべての要素が であるかどうか、配列の長さが 0 でないかどうかなど、3 つの可能性を挙げるだけで意味が異なります。True
True
True
True
ユーザーによってニーズや想定が異なる可能性があるため、NumPy 開発者は推測することを拒否し、ValueError
ブール コンテキストで配列を評価しようとするたびに を発生させることにしました。2and
つの NumPy 配列に適用すると、2 つの配列がブール コンテキストで評価されます ( __bool__
Python3 では を、__nonzero__
Python2 では を呼び出すことによって)。