检查是否使用Numpy数组定义变量?

时间:2012-10-19 12:00:20

标签: python numpy

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

foo == True

但是当foo可能是Numpy对象(例如numpy.ndarray)时,这不再起作用了,我收到了错误:

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

并且在这种情况下我想要a.any(),但是这在非可迭代对象上失败。

当然,我可以明确检查foo0还是None,但我想知道是否有更优雅的方法来执行此操作。

如何检查任意对象(可迭代和不可迭代)是否为True

3 个答案:

答案 0 :(得分:2)

只需使用np.allnp.any代替.all方法即可。 np.all如果还不是一个数组,则会创建一个数组。

答案 1 :(得分:1)

我使用的方法是假设在try除了块之外存在变量的语句中包含该语句:

try:
    do_something(foo)
except NameError:
    foo = something

答案 2 :(得分:0)

这个逻辑可以让你的工作变量是 np 数组与否。

import numpy as np
l = np.eye(3)
if(str(type(l)) == "<class 'numpy.ndarray'>"):
   print('yes')
else:
  print('no')