python - 如何检查 numpy.array 是否存在?numpy数组的真值测试值?
问题描述
在开发一个使用 的类时numpy.array
,我想在一个阶段构造这个数组,然后检查它是否存在以便操作它,或者在稍后的阶段构造它(下面的伪代码)。我如何检查这个数组是否存在?
对于任何基本对象,我使用 :if my_object: # do something
它使用真值测试,但对于numpy
真值测试检查数组的任何或所有元素是否存在,因此if my_array: # do something
给出错误The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
。
目前,唯一可行的转机是调用isinstance(my_array,numpy.ndarray)
,但我认为这不是很方便(尤其是因为一些库,例如sklearn
可以将 numpy 数组转换为scipy.sparse
对象)。
说明我想做的伪代码:
def compute_my_array(self, ...):
# long job here
return my_array
def new_computation(self, my_array = None, ...):
if not my_array: # if my_array does not exist, compute it ...
my_array = compute_my_array(self, ...)
do_something_else_with_my_array(my_array) # ... otherwise use it
目前我发现检查是否存在的唯一方法my_array
是使用
if not isinstance(my_array, numpy.ndarray):
my_array = compute_my_array(my_array)
有没有其他(也许更好)的方法来做这个检查?
解决方案
只需更改默认值以返回一个空数组,然后检查数组中是否有任何内容
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
推荐阅读
- python - 用几个元素组成的向量平滑曲线?
- flutter - 如何在颤振中构建排序列表视图(按日期排序)
- javascript - 如何在带有 jQuery 的单选按钮上使用 if..else 语句
- javascript - 为什么 Object.values(services) 中的“离线”在其中存在“离线”时不正确
- html - 过渡不适用于下拉菜单
- django - Django queryset to string 在测试中不返回字符串
- git - 颤振:gitignore 被...忽略
- firebase - 没有为“对象”类型定义运算符“[]”。尝试定义运算符'[]'。尝试从 Firestore 获取数据时出错
- ruby-on-rails - 使计数器缓存列在 rails 中只读
- c++ - 使用模拟退火算法在 1000 个皇后问题中几乎 2 个程序的运行时间差异很大