Python 如何检查numpy.array是否存在?numpy数组的真值测试值?

Python 如何检查numpy.array是否存在?numpy数组的真值测试值?,python,numpy,scipy,isinstance,Python,Numpy,Scipy,Isinstance,在开发一个使用numpy.array的类时,我想在一个阶段构造这个数组,然后检查它是否存在以便操作它,或者在以后的阶段构造它(下面的伪代码)。如何检查此阵列是否存在 对于任何基本对象,我使用:if my_object:#do something使用,但是对于numpy检查数组中是否存在任何或所有元素,因此if my_array:#do something给出错误具有多个元素的数组的真值不明确。使用a.any()或a.all() 目前,唯一有效的方法是调用isinstance(我的数组,numpy

在开发一个使用
numpy.array
的类时,我想在一个阶段构造这个数组,然后检查它是否存在以便操作它,或者在以后的阶段构造它(下面的伪代码)。如何检查此阵列是否存在

对于任何基本对象,我使用:
if my_object:#do something
使用,但是对于
numpy
检查数组中是否存在任何或所有元素,因此
if my_array:#do something
给出错误
具有多个元素的数组的真值不明确。使用a.any()或a.all()

目前,唯一有效的方法是调用
isinstance(我的数组,numpy.ndarray)
,但我认为这并不方便(特别是因为像
sklearn
这样的库可以将numpy数组转换为
scipy.sparse
对象)

用于说明我想做什么的伪代码:


def compute_my_阵列(自…):
#长期工作
返回我的数组
定义新的_计算(self,my_array=None,…):
如果不是my_数组:#如果my_数组不存在,请计算它。。。
my_数组=计算my_数组(self,…)
用我的数组(我的数组)做些别的事情吗。。。否则就用它
目前,我发现检查我的数组是否存在的唯一方法是使用

如果不存在(my_数组,numpy.ndarray):
my_数组=计算my_数组(my_数组)

有没有其他(也许更好)的方法来进行检查?

只需更改默认值以返回空数组,然后检查数组中是否有任何内容

def new_computation(self, my_array = np.zeros((1,)), ...):
   if not my_array.any(): # if my_array has no nonzero data, compute it ...
      my_array = compute_my_array(self, ...)
   do_something_else_with_my_array(my_array) # ... otherwise use it

显然,
如果我的_数组不是None,
执行此任务。。。有没有其他类似蟒蛇的方法来解决这个问题?这能回答你的问题吗
如果我的_数组为None:
(这是您想要的)完全正确pythonic@DanielF是的,但我的主要问题是numpy数组或scipy.sparse矩阵是否为空,所以这实际上不是同一个问题。但我肯定能用这个把戏。谢谢。@amzon ex感谢您指向此anwser。这并不能真正解决我的问题,因为我想知道可以是scipy.sparse或numpy.array的对象是否为空。但是,可以选择执行object.shape检查。尽管如此,我还是在寻找更直接的东西。