关于python:检查变量是否用numpy数组定义?

Check if variable is defined with Numpy array?

有时我想测试一个变量是0还是None。在纯Python中,这只是

1
foo == True

但当foo可能是一个麻木的对象(如numpy.ndarray时,这就不再有效了,我得到了错误:

1
2
ValueError: The truth value of an array with more than one element is ambiguous.
 Use a.any() or a.all()

在这种情况下,我需要a.any(),但是这在不可度量的对象上失败了。

当然,我可以明确地检查foo0还是None,但我想知道是否有更优雅的方法来做到这一点。

如何检查任意对象(包括iterable和not)是否为True


np.allnp.any代替.all方法。如果不是一个数组,np.all将创建一个数组。


我使用的方法是包围语句,假设try-except块中存在变量:

1
2
3
4
try:
    do_something(foo)
except NameError:
    foo = something