检查变量是否为 None 或 numpy.array

新手上路,请多包涵

如果键有关联的数组,我会在表中查找。按照设计,我的 table.__getitem__() 返回 None 而不是 KeyError -s。我希望此值为 None 或与 w 关联的 numpy 数组。

 value = table[w] or table[w.lower()]
# value should be a numpy array, or None
if value is not None:
    stack = np.vstack((stack, value))

只有当我使用上面的代码并且第一次查找匹配时,我才会得到:

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

如果我选择 value = table[w].any() or table[w.lower()].any() ,那么如果它不匹配,我预计会遇到:

 AttributeError: 'NoneType' object has no attribute 'any'

我一定是错过了正确的方法,怎么办?

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

阅读 1.1k
2 个回答

IIUC 这应该工作:

 value = table[w]
if value is None:
    value = table[w.lower()]

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

if type(value) is numpy.ndarray:
    #do numpy things
else
    # Handle None

虽然上面的方法可行,但我建议保持签名简单和一致,即 table[w] 应该始终返回 numpy 数组。在 None 的情况下,返回空数组。

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

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