让我从描述每种类型开始-
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
推荐人-