状況
numpyのarrayの要素が全て0かどうかチェックしたい。
例えば、array = np.array([0, 0, 0, 0])
を持っているときに、if array == np.array([0, 0, 0, 0]):
という条件分岐をしようとすると、以下のエラーが発生してしまう。
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> import numpy as np
>>> array = np.array([0, 0, 0, 0])
>>> if array == np.array([0, 0, 0, 0]):
... print('all zero!')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
(動作はPython 3.7.4で確認しています。)
解決法
np.all()を使う。
>>> if np.all(array == 0):
... print('all zero!')
...
all zero!
ValueErrorのメッセージUse a.any() or a.all()
や公式ドキュメント[1]https://numpy.org/doc/1.18/reference/generated/numpy.all.htmlを見ても、すぐに理解できなかったので、備忘録として残しておきます。
コメント