【Numpy】arrayの要素が全部0か判定する方法【Python】

状況

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を見ても、すぐに理解できなかったので、備忘録として残しておきます。

参考: https://thispointer.com/6-ways-to-check-if-all-values-in-numpy-array-are-zero-in-both-1d-2d-arrays-python/

コメント