pylab直方图如何去除NaN值

21

当我的一些数据包含“非数字”值时,我制作直方图遇到了问题。我可以使用numpy中的nan_to_num来消除错误,但是这会导致直方图出现大量零值,从而混淆直方图。

pylab.figure()
pylab.hist(numpy.nan_to_num(A))
pylab.show()

因此,想法是创建另一个数组,在其中删除所有NaN值,或者以某种方式在直方图中屏蔽它们(最好使用一些内置方法)。

1个回答

41

使用 A[~np.isnan(A)] 从数组中删除 np.nan 值,这将选择所有在 A 中值不是 nan 的条目,因此它们在计算直方图时将被排除。以下是如何使用它的示例:

>>> import numpy as np
>>> import pylab

>>> A = np.array([1,np.nan, 3,5,1,2,5,2,4,1,2,np.nan,2,1,np.nan,2,np.nan,1,2])

>>> pylab.figure()
>>> pylab.hist(A[~np.isnan(A)])
>>> pylab.show()

在此输入图像描述


可以正常工作,谢谢(我只能在4分钟后接受您的答案)。我不太确定您在文档中找到了那个 ~ 语句的位置,但它是有效的。 - usethedeathstar
1
@usethedeathstar 这里是~,以及这里是numpy中实现的所有位运算符 - askewchan
2
如果你不知道~运算符,你可以使用A[np.isfinite(A)],这也可能更符合你的需求。 - askewchan
请注意,在numpy之外,~!not)不同,并且~有时会返回您不希望的结果(例如,将计算为True-2)。请使用!,或更好的方法是拼写出not - alexey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接