当我的一些数据包含“非数字”值时,我制作直方图遇到了问题。我可以使用numpy中的nan_to_num
来消除错误,但是这会导致直方图出现大量零值,从而混淆直方图。
pylab.figure()
pylab.hist(numpy.nan_to_num(A))
pylab.show()
因此,想法是创建另一个数组,在其中删除所有NaN值,或者以某种方式在直方图中屏蔽它们(最好使用一些内置方法)。
当我的一些数据包含“非数字”值时,我制作直方图遇到了问题。我可以使用numpy中的nan_to_num
来消除错误,但是这会导致直方图出现大量零值,从而混淆直方图。
pylab.figure()
pylab.hist(numpy.nan_to_num(A))
pylab.show()
因此,想法是创建另一个数组,在其中删除所有NaN值,或者以某种方式在直方图中屏蔽它们(最好使用一些内置方法)。
使用 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()
~
,以及这里是numpy中实现的所有位运算符。 - askewchan~
运算符,你可以使用A[np.isfinite(A)]
,这也可能更符合你的需求。 - askewchan~
与!
(not
)不同,并且~
有时会返回您不希望的结果(例如,将计算为True
的-2
)。请使用!
,或更好的方法是拼写出not
。 - alexey