代码之家  ›  专栏  ›  技术社区  ›  mon

numpy-空值或空列的定义是什么?

  •  0
  • mon  · 技术社区  · 4 年前

    问题

    有关于 null 例如空值或空列,但是 无效的 在努比?numpy也是这样吗。NaN还是别的什么?是 null column 所有值均为NaN或其中一个值为NaN的列?

    还是说没有也一样?

    a = np.array([
        ("one", "first"),
        (None, "fourth")
    ])
    ----
    array([['one', 'first'],
           [None, 'fourth']], dtype=object)
    

    如果我遵循 60. How to tell if a given 2D array has null columns? NPzeros()包含null值,因为它的结果为True(有null列)。那么null在numpy中也是零?

    a = np.zeros((3,3))
    print((~a.any(axis=0)).any())
    ---
    True
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   Shubham Bhardwaj    4 年前

    让我从描述每种类型开始- np.NaN 这是一个浮点类型的类。Numpy遵循IEEE 754标准来表示数字。根据这份文件。NaN是一个未定义的数字。例如 log(-1), sqrt(-1), 0*inf, 0/0 所有这些都属于非数字范畴。这些操作将返回一个NaN。

    >>> np.log(-1)
    nan
    >>> np.sqrt(-1)
    nan
    >>> 0*np.inf
    nan
    

    南不是指 inf 或者0。表示超出Numpy数组容量的任何数字都会导致以下行为。

    >>> x = np.array([1e-50], dtype=np.float32)
    >>> x
    array([0.], dtype=float32)
    >>> x = np.array([1e50], dtype=np.float32)
    >>> x
    array([inf], dtype=float32)
    >>> np.inf == np.NaN
    False
    >>> 0.0 == np.NaN
    False
    

    那么,两者之间的区别是什么 None NP楠 . 在Python中 没有一个 是一个关键词。它有自己的类型 NoneType . 它可以被认为是 null 巨蟒。在其他语言中,我们使用0或其他数字来表示 无效的 .在python中,我们不这样做,而是使用一种全新的数据类型,称为 非类型 .默认情况下 没有一个 是“falsy”,意思是评估 if not None 返回 True .就像一个空列表,空字典,空字符串,0。

    >>> not None
    True
    >>> not []
    True
    >>> not 0
    True
    

    正如我看到你的问题,没有一个似乎是一个好的选择,但要注意,你必须保持你的信心 dtype 作为目标。这是因为你有两种不同的类型 string Nonetype 在同一个数组中。这两种类型是父类的子类 object 在数组中定义的。这将产生内存开销。拥有相同的数据类型有助于NumPy高效地分配内存,提高执行速度。因此,如果定义一个数组 np.empty([]) 它用浮点值0填充它。它的功能就像一个 无效的 价值看看下面的例子-

    >>> np.empty((1,2), dtype=object)
    array([[None, None]], dtype=object) 
    >>> np.empty((1,2), dtype=np.float32)
    array([[1.60e-43, 1.54e-43]], dtype=float32) # this is 0,0
    

    推荐人-