如何用另一个列表中的元素替换 numpy 数组中的 NaN

jam*_*s42 -2 python numpy python-3.x

我面临基本替换的问题。我有两个数组,其中一个包含数字和 NaN,另一个数组应该替换 NaN,显然是按照我的意愿排序的。举个例子: x1 = [NaN, 2, 3, 4, 5, NaN, 7, 8, NaN, 10]and fill = [1, 6, 9]我想通过索引替换来获得一个数组,例如: x1_final = [1, 2, 3, 4, 5, NaN, 7, 8, NaN, 10]

我写了这行愚蠢的代码,它将所有 NaN 替换为数组的第一个元素fill

for j in range(0,len(x1)):
    if np.isnan(x1[j]).any():
        for i in range(0,len(fill)):
            x1[j] = fill[i]
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到我的结果?

use*_*203 5

这对你有用吗?

train = np.array([2, 4, 4, 8, 32, np.NaN, 12, np.NaN])
fill = [1,3]
train[np.isnan(train)] = fill
print(train)
Run Code Online (Sandbox Code Playgroud)

输出:

[  2.   4.   4.   8.  32.   1.  12.   3.]
Run Code Online (Sandbox Code Playgroud)