2013-12-16 2 views
0
import numpy as np 

a = np.array([1,2,3,4,5,6,7,8,9]) 
b = np.where (a==3,np.nan,a) 
print (b) #OK, can convert certain values (e.g. 3) into np.nan 

c = np.where (b==np.nan,3,b) 

print (c) 

하지만 작동하지 않습니다! np.nan을 3으로 변환 할 수 없습니다. 배열 cnp.nan을 값 3으로 변환하려면 어떻게해야합니까? 결과 (배열 c)는 원래 배열 a과 같아야합니다.numpy 배열에서 np.nan을 값으로 변환합니다.

답변

5
c = np.where(np.isnan(b), 3, b) 
: 당신은 비록 np.isnan 및 부울 색인을 사용할 수 있습니다
3

nan으로 작업하는 것은 다소 번거롭기 때문에 nan != nan입니다.

>>> a = np.arange(10.0) 
>>> a 
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]) 
>>> a[a % 3 == 0] = np.nan 
>>> a 
array([ nan, 1., 2., nan, 4., 5., nan, 7., 8., nan]) 
>>> a[np.isnan(a)] = 999 
>>> a 
array([ 999., 1., 2., 999., 4., 5., 999., 7., 8., 999.]) 
관련 문제