如何检查 numpy 数组是否已经存在?

新手上路,请多包涵

我想知道在代码之前的某个地方是否已经定义了一个数组。类似 a.exist() 的东西如果存在则给出 True,如果不存在则给出 False。

我尝试了 a.size: ,但如果数组尚不存在,它会给出一条错误消息,我想避免这种情况。

如果你想知道,要求这样做的情况是循环发生的。

原文由 user4770892 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 560
2 个回答

Python 有一些内置函数可以检查是否在当前/本地/全局范围内分配了变量。

例如,检查一个变量是否在当前本地作用域中定义使用:

 if 'a' in dir():
    # Variable a is defined.
    if hasattr(a, 'shape'):
        # Probably a numpy array, at least it has a shape.

但这不是好的 python, try/except 更常见但为了完整性我认为值得一提的是你可以在没有任何尝试/例外的情况下完成它。

 if 'a' in dir():
    print('yes')
else:
    print('no')
# prints 'no' because we haven't defined any variable a

a = np.array([1,2,3])
if 'a' in dir():
    print('yes')
else:
    print('no')
# prints 'yes' because I defined it

del a
if 'a' in dir():
    print('yes')
else:
    print('no')
# prints 'no' because I deleted the variable again

另外值得一提的是 localsglobals

原文由 MSeifert 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要使用 try/except 块:

 try:
    _ = a.shape
except NameError:
    print('a does not exist.')
except AttributeError:
    print('a does not have a shape property.')

正如@padraic 指出的那样,这真的不应该首先发生。最好初始化变量(例如 a = None ),然后检查它们是否已设置(例如 if a: print('a is set') else: print('a has not been set')

原文由 Alexander 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题