2013-09-30 14 views
10

Mam problem z tworzeniem histogramu, gdy niektóre z moich danych zawierają wartości "nie liczba". Mogę pozbyć się błędu, używając numpy, ale otrzymuję wiele wartości zerowych, które zepsuły również histogram.Histogram pylab pozbyć się nan

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

Więc pomysłem byłoby zrobić kolejną tablicę, w której wszystkie wartości nan zostaną usunięte, lub po prostu maskują je w histogramie w jakiś sposób (najlepiej z jakimś wbudowanym metody).

Odpowiedz

24

Usuń np.nan wartości z macierzy przy użyciu A[~np.isnan(A)], to wybrać wszystkie wpisy w A których wartości nie są nan, więc zostaną one wykluczone podczas obliczania histogramu. Oto przykład, jak z niego korzystać:

>>> 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

który działa, dzięki (i może przyjąć tylko swoją odpowiedź w 4 min) Nie do końca pewien, gdzie znaleziono, że ~ oświadczenie w dokumentacji, ale działa – usethedeathstar

+0

@usethedeathstar [Tutaj jest '~'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.invert.html) i [tutaj są wszystkie operatory bitowe zaimplementowane w numpy] (http://docs.scipy.org/doc/numpy/reference/routines.bitwise.html) – askewchan

+1

Jeśli nie wiesz o operatorze '~', możesz po prostu użyć 'A [np.isfinite (A)] 'który jest prawdopodobnie bardziej, co i tak chcesz. – askewchan

Powiązane problemy