2013-09-30 23 views
10

Bazı verilerim "sayı değil" değerleri içerdiğinde bir histogram oluşturmayla ilgili bir sorunum var. Hatadan nan_to_num numpy kullanarak kurtulabilirim, ama histogramı da bozan çok fazla sıfır değer elde ediyorum.pylab histogram netten kurtulun

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

Yani fikri tüm nan değerleri gitmiş, ya da sadece (bazı yerleşik yöntemi ile preferrably) bir şekilde histogram bunları maskelemek için hangi başka bir dizi yapmak olacaktır. A[~np.isnan(A)] kullanarak diziden

cevap

24

Kaldır np.nan değerleri bu değerler nan hangilerinin A tüm girişleri seçecektir, bu nedenle histogram hesaplanırken onlar dışında tutulacaktır. İşte bir nasıl kullanılacağını örneği şudur: belgelerinde olduğu ~ açıklamada bulundu

>>> 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() 
çalışır

enter image description here

+0

, teşekkürler (ben sadece 4 dakika içinde cevap kabul edebilir) tamamen emin değil, ama o – usethedeathstar

+0

@usethedeathstar [İşte '~'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.invert.html) çalışır ve uygulandığı şekliyle [burada bit operatörleri hepsi Eğer '~' operatörü hakkında bilmiyordum numpy] (http://docs.scipy.org/doc/numpy/reference/routines.bitwise.html) – askewchan

+1

, sadece ('A [np.isfinite kullanabilirsiniz A)] 'belki daha fazla zaten istediğini olan. dış numpy, '~' 'aynı olmadığını – askewchan