Я хотів би перевірити, чи є змінною None або numpy.array. Я реалізував check_a
функцію для цього.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Але цей код підвищує ValueError. Який прямий шлях вперед?
ValueError Traceback (most recent call last)
<ipython-input-41-0201c81c185e> in <module>()
6 check_a(a)
7 a = np.array([1,2])
----> 8 check_a(a)
<ipython-input-41-0201c81c185e> in check_a(a)
1 def check_a(a):
----> 2 if not a:
3 print "please initialize a"
4
5 a = None
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
not
, тому помилка насправді трапляється, коли not
намагається трактувати масив як єдиний булевий і виявляє, що він не може. Якби це було ~a
, це використовувало б перевантаження NumPy і не вдалося, коли if
намагається використовувати заперечений масив як єдиний булевий.
ValueError
одне з найпоширенішихnumpy
питань. Це означає, щоnot a
виробляє логічний масив з (у цьому випадку) 2 значеннями. Цей булевий масив не можна використовувати якif
умову!is None
Альтернатива добре знати, але ви повинні також зрозуміти цю помилку.