numpy 查找“nan”并用数字替换

cotxawn7  于 2023-01-05  发布在  其他
关注(0)|答案(4)|浏览(135)

我想替换数组中的数字3而不是所有的'nan'。这是我的代码:

train= train.replace("nan",int(3))

但是我的阵法没有任何变化,你能指点我一下吗?

i86rm4rw

i86rm4rw1#

您可以使用np.isnan

import numpy as np
train = np.array([2, 4, 4, 8, 32, np.NaN, 12, np.NaN]) 
train[np.isnan(train)]=3
train

输出:

array([  2.,   4.,   4.,   8.,  32.,   3.,  12.,   3.])
vhmi4jdf

vhmi4jdf2#

>>> import math
>>> train = [10, float('NaN'), 20, float('NaN'), 30]
>>> train = [3 if math.isnan(x) else x for x in train]
>>> train
[10, 3, 20, 3, 30]
vddsk6oq

vddsk6oq3#

此代码将所有nan更改为3

y = np.nan_to_num(x) + np.isnan(x)*3

此代码将所有3更改为nan

y = x*(x!=3) + 0/(x!=3)

这些方法只适用于numpy数组。请注意np.nan_to_num(x)总是将nan更改为0

axzmvihb

axzmvihb4#

下面的工作与浮点数,但不能很快使它与整数... Terveisin马库斯

import numpy as np
a=np.array([1,2,3,np.nan])
b=np.nan_to_num(a,nan=3)
print(f"a: {a}")
print(f"b: {b}")

答:[ 1. 2. 3.南]
B:[1.2.3.3.]

相关问题