2013-09-30 89 views
10

我有一個問題,當我的一些數據包含「不是數字」的值的直方圖。我可以通過使用numpy中的nan_to_num來消除錯誤,但是我得到了很多零值,這些值也使直方圖變得糟糕。pylab直方圖擺脫南

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

這樣的想法會再拍陣列中的所有NaN值都消失了,或者只是掩蓋他們在直方圖以某種方式(最好是一些內建的方法)。使用A[~np.isnan(A)]您的陣列

回答

24

刪除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() 

enter image description here

+0

這樣的作品,謝謝(我只能接受4分鐘你的答案),不完全知道你在哪裏發現〜文檔中聲明,但它的工作原理 – usethedeathstar

+0

@usethedeathstar [這是'〜'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.invert.html),[這裏是所有的按位運算符numpy](http://docs.scipy.org/doc/numpy/reference/routines.bitwise.html) – askewchan

+1

如果你不知道'〜'運算符,你可以使用'A [np.isfinite( A)]'這可能更多是你想要的東西。 – askewchan