将np.nan转换为numpy数组中的值

时间:2013-12-16 17:42:39

标签: python arrays numpy

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相同。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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.])