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
相同。
答案 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.])