【问题标题】:Numpy.array(None) returns None but is not NoneNumpy.array(None) 返回 None 但不是 None
【发布时间】:2018-01-04 23:28:43
【问题描述】:

谁能解释这种行为?

print np.array(None)
> None
print np.array(None) is None
> False

【问题讨论】:

  • print 输出不明确。两个东西打印相同的事实并不意味着它们是同一个对象,甚至它们相等或它们具有相同的类型。毕竟,print 'None'print None 打印相同的东西,但希望你不会对 'None' != None 感到惊讶。
  • 除了所有其他答案之外,值得注意的是 np.array(1)np.array(2) 具有相同的行为

标签: python numpy nonetype


【解决方案1】:

您有一个具有None 作为str() 值的对象,所以这就是打印的内容:

>>> import numpy as np
>>> np.array(None)
array(None, dtype=object)
>>> str(np.array(None))
'None'

这是一个包含字母None 的字符串值。这与 None 单例对象不同,它只是在打印时看起来相同。

【讨论】:

    【解决方案2】:

    您实际上有一个字符串表示为 None 的数组对象,而不是您想象的 None 对象:

    >>> np.array(None)
    array(None, dtype=object)
    >>> str(_)
    'None'
    

    这就是打印语句显示None的原因。

    然而,你实际上在做的是:

    np.array(None) is None # False
    

    【讨论】:

      【解决方案3】:

      np.array(None) 不是Noneprint 只是将其打印为None

      In [1]: a = np.array(None)
      
      In [2]: a
      Out[2]: array(None, dtype=object)
      

      【讨论】:

        【解决方案4】:

        请说明您要做什么。你所做的是询问 np.array(None) 是否是 None 类型,它不是,因此返回 False。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-29
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多