在Python中将nan
插入到复杂的numpy数组中会产生一些(对我来说)意外的行为:
a = np.array([5+6*1j])
print a
array([5.+6.j])
a[0] = np.nan
print a
array([nan+0.j])
我希望Python编写nan+nanj.
进行分析,这通常并不重要,因为任何具有实部和/或虚部的复形的np.isnan
都是真的。然而,我不知道它的行为,当我绘制数组的实部和虚部时,它给我的印象是我有关于虚部的信息(但是没有)。解决方法是写a[0] = np.nan + np.nan*1j
。有人能解释一下这种行为的原因吗?在
这可能与南的纽比形象有关:
本质上
np.nan
是float
。通过设置x[0] = np.nan
,您将其值设置为“实”浮点(但不更改数组的dtype
,这仍然很复杂),因此虚部保持不变,即0j
。在这也解释了为什么你可以通过做
np.nan * 0j
来改变虚部这里的问题是,当您创建具有复杂值的数组时:
您已经创建了一个
^{pr2}$dtype
复杂数组:因此,通过添加一个只包含实部的值,它将被转换为一个复值,因此您将插入一个复数分量等于
0j
的数字,因此:这解释了这种行为:
相关问题 更多 >
编程相关推荐