【发布时间】:2023-01-07 22:12:36
【问题描述】:
假设我们有一个 a 是一个 array_like 并且我们想检查它是否为空。实现此目的的两种可能方法是:
if not a:
pass
if numpy.array(a).size == 0:
pass
如果a=None,第一个解决方案也会评估为True。但是我只想检查一个空的array_like。
第二种解决方案似乎足够好。我只是想知道是否有一个 numpy 内置函数或者更好的解决方案来检查大小?
【问题讨论】:
-
您绝对不应该使用表达式
not a。如果a实际上是一个大小为 0 的 numpy 数组,那么在最新版本的 numpy 中,该表达式将生成弃用警告:DeprecationWarning:空数组的真值不明确。返回 False,但将来会导致错误。使用array.size > 0检查数组是否为空。该消息表明检查size属性是推荐的方法。 -
另请注意,如果
a是一个列表,例如a = [[], [], []],则not a将为 False(因为len(a)为 3),但np.array(a).size为 0(因为创建的数组具有形状 (3, 0)).