2016-03-19 21 views
2

Benim veri kümesi aşağıdaki gibi görünür:Numpy'den nan'e bir değer aralığı nasıl ayarlanır?

>>> difference 
array([[ -1, 0, 4], 
     [-20, 2, -1], 
     [ 2, -20, 0]]) 

Ben nan tarafından yerine edilecek +2 ila -2 arasında değişen değerler istiyorum. Sonuç dizisi aşağıdaki gibi görünmelidir

. aralığının Gerçek değerleri almak için np.abs(difference)<=2 kullanma

>>> difference 
array([[ nan, nan, 4.], 
     [-20., nan, nan], 
     [ nan, -20., nan]]) 

cevap

6

, tek yönlü, np.where ile olacağını şöyle -

np.where(np.abs(difference)<=2,np.nan,difference) 

Numune koşmak - Bütünlüğü için

In [5]: difference 
Out[5]: 
array([[ -1, 0, 4], 
     [-20, 2, -1], 
     [ 2, -20, 0]]) 

In [6]: np.where(np.abs(difference)<=2,np.nan,difference) 
Out[6]: 
array([[ nan, nan, 4.], 
     [-20., nan, nan], 
     [ nan, -20., nan]]) 

, daha Böyle bir maskeyi almanın açık yolu, np.abs(difference)<=2 yerine (difference <=2) & (difference >=-2) olacaktır.

+0

Çok teşekkür ederim !!! @Divakar –

+2

'np.where' kesinlikle gerekli değildir. Fark dizisini dizine eklemek için doğru dizisini de kullanabilirsiniz. Örneğin. farklılıklar [np.abs (farklar) <= 2] = np.nan' (sağlanan farklar bir kayan dizi). – Dunes

1

şamandıra aritmetik ile göre, yapabileceğiniz:

In [7]: valid =abs(difference)>2 

In [8]: valid/valid *difference 
Out[8]: 
array([[ nan, nan, 4.], 
     [-20., nan, nan], 
     [ nan, -20., nan]]) 
İlgili konular