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. Как можно преобразовать np.nan в массив c в значение 3? Результат (массив c) должен быть таким же, как исходный массив a.convert np.nan in value in numpy array

ответ

3

Работа с nan немного сложнее, потому что nan != nan. Вы можете использовать np.isnan и логическое индексирование, хотя:

>>> 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.])