Fin*_*sen 6 python numpy set nan
我遇到了Python的Numpy,set和NaN(非数字)的不可预知的行为:
>>> set([np.float64('nan'), np.float64('nan')])
set([nan, nan])
>>> set([np.float32('nan'), np.float32('nan')])
set([nan, nan])
>>> set([np.float('nan'), np.float('nan')])
set([nan, nan])
>>> set([np.nan, np.nan])
set([nan])
>>> set([float('nan'), float('nan')])
set([nan, nan])
Run Code Online (Sandbox Code Playgroud)
这里np.nan产生一个单独的元素集,而Numpy的nans产生一组中的多个nans.浮动('nan')也是如此!请注意:
>>> type(float('nan')) == type(np.nan)
True
Run Code Online (Sandbox Code Playgroud)
我想知道这种差异是如何产生的,以及不同行为背后的理性是什么.
NAN的一个特性是NAN!= NAN,与其他所有数字不同.但是,在set尝试插入新的哈希索引之前,首先检查id(x)是否与哈希索引处的现有成员匹配.如果你有两个具有不同id的对象,它们都具有值NAN,那么你将在集合中获得两个条目.如果它们都具有相同的ID,则它们会折叠成单个条目.
正如其他人所指出的,np.nan是一个始终具有相同id的单个对象.
| 归档时间: |
|
| 查看次数: |
1600 次 |
| 最近记录: |