【问题标题】:matlab isempty() function in numpy?numpy中的matlab isempty()函数?
【发布时间】:2015-01-26 21:29:45
【问题描述】:

我在 matlab 中有这段代码:

switch 1
    case isempty(A) 
...

其中 A 是一个二维数组。

如果 2-dim 数组为空(只有 0 个值),我如何使用 numpy 检查?

【问题讨论】:

  • 这是一个相当晚的评论,但我刚刚来到这个问题,试图将一些 matlab 代码翻译成 python。问题中有一个错误的假设(至少对于现在的 matlab 运行方式):isempty() 不检查“仅包含零”而是“至少在维度上长度为零”(),这意味着 A 没有内容.因此,答案是A.size == 0,如下所示:stackoverflow.com/questions/11295609/…

标签: python numpy


【解决方案1】:

检查数组是否为空(即不包含任何元素),可以使用A.size == 0

import numpy as np
In [2]: A = np.array([[1, 2], [3, 4]])

In [3]: A.size
Out[3]: 4

In [4]: B = np.array([[], []])

In [5]: B.size
Out[5]: 0

要检查它是否只包含 0,您可以检查 np.count_nonzero(A)

In [13]: Y = np.array([[0, 0], [0, 0]])
In [14]: np.count_nonzero(Y)
Out[14]: 0

【讨论】:

  • 谢谢。我认为 matlab 代码试图用 isempty() 找出数组是否只包含 0。所以我猜大小​​不起作用。所以我试试你的第二个:)
【解决方案2】:

您可以将您的数组x 与 0 进行比较,看看是否所有值都为 False

np.all(x==0)

【讨论】:

    【解决方案3】:
    >>> empty_array = np.zeros((3,3))
    >>> empty_array
    array([[ 0.,  0.,  0.],
           [ 0.,  0.,  0.],
           [ 0.,  0.,  0.]])
    >>> if np.all(empty_array==0): print True
    ... 
    True
    >>> empty_array[1][1]=1
    >>> empty_array
    array([[ 0.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  0.]])
    >>> if np.all(empty_array==0): 
    ...    print True
    ... else:
    ...    print False
    ... 
    False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 2021-01-24
      相关资源
      最近更新 更多