我遇到了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])
在这里,np.nan产生单个元素集,而Numpy的nans产生一个集合中的多个nans。float(’nan’)也是如此!并注意:
>>> type(float('nan')) == type(np.nan)
True
我想知道这种差异是如何产生的,以及不同行为背后的合理性是什么。
NAN的特性之一是NAN!=
NAN,与所有其他数字不同。但是,在set
尝试插入新成员之前,first的实现会先检查id(x)是否与哈希索引处的现有成员匹配。如果您有两个ID都不同的对象,它们的ID都不同,则您将在集合中获得两个条目。如果它们具有相同的ID,则它们会折叠为一个条目。
正如其他人指出的那样,np.nan
是一个始终具有相同ID的单个对象。
本文向大家介绍Python 实现将numpy中的nan和inf,nan替换成对应的均值,包括了Python 实现将numpy中的nan和inf,nan替换成对应的均值的使用技巧和注意事项,需要的朋友参考一下 nan:not a number inf:infinity;正无穷 numpy中的nan和inf都是float类型 t!=t 返回bool类型的数组(矩阵) np.count_nonzero(
问题内容: 有没有一种方法可以将NaN存储在整数的Numpy数组中?我得到: 问题答案: 不,至少在当前版本的NumPy中不能。A是 仅对 float数组的特殊值。 有人在谈论引入一个特殊的位,该位将允许非浮点数组存储实际上与a相对应的内容,但到目前为止(2012/10),这仅仅是个话题。 同时,您可能需要考虑使用该程序包:您可以使用特殊值表示无效值,而不是选择像-99999这样的无效整数。
问题内容: 使用Python的本机函数和NumPy的函数在性能和行为上有什么区别?在NumPy的数组上工作并在Python列表上工作,它们都返回相同的有效结果(尚未测试过诸如溢出的边缘情况)但类型不同。 编辑: 我认为我在这里的实际问题是,在使用Python整数列表上比使用Python自己的整数快吗? 另外,使用Python整数和标量有什么含义(包括性能)?例如,对于,如果类型为Python整数或
本文向大家介绍Python快速转换numpy数组中Nan和Inf的方法实例说明,包括了Python快速转换numpy数组中Nan和Inf的方法实例说明的使用技巧和注意事项,需要的朋友参考一下 在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误。这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值。 numpy.nan_to_nu
问题内容: 大多数语言都有NaN常数,您可以使用它来为变量赋值NaN。python可以不使用numpy来做到这一点吗? 问题答案: 是的-使用。 在Python 3.5之前,可以使用(不区分大小写)。 请注意,检查两个NaN是否彼此相等将始终返回false。部分原因是不能(严格地说)说两个不是数字的事物彼此相等-请参阅所有比较为IEEE754 NaN值返回false的基本原理是什么? 了解更多详细
问题内容: 我正在使用读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母字符串。有时在某些情况下单元格为空。在我看来,应读取但应分配该字典条目的值。当然,由于它具有空值,因此更能描述一个空单元格,而nan只是说读取的值不是数字。 我的理解正确吗,和之间有什么区别?为什么分配而不是? 另外,我的字典检查是否有任何空单元格一直在使用: 但这给了我一个错误,说我不能使用此检查v。我猜这是因为