我想检查变量是否为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()
@hpaulj:不太正确-您不能重载
—
user2357112支持Monica19
not
,因此,当not
尝试将数组视为单个布尔值而发现不能这样做时,实际上会发生错误。如果为~a
,则将使用NumPy的重载,并在if
尝试将取反数组用作单个布尔值时失败。
ValueError
是最常见的numpy
问题之一。这意味着将not a
生成一个布尔数组,该数组具有(在这种情况下)2个值。此布尔数组不能用作if
条件!该is None
方案是很好的了解,但你也应该明白这个错误。