如何用其他数组替换数组中的 NaN

Ric*_* dm 3 python arrays numpy

我有 2 个长度相同的 Numpy 数组

array([ 0.9737068 ,  NaN,  NaN, ..., -0.64236529,
       -0.88137541, -0.78318609])

array([ 0.9 ,  0.7643,  0.61, ..., -0.64236529,
       -0.88137541, -0.78318609])
Run Code Online (Sandbox Code Playgroud)

在第一个数组中,我有 NaN 值,如何用第二个数组中的值替换这些 NaN 值。在这个例子中,我的第三个数组是:

array([ 0.9737068 ,  Nan => 0.7643,  NaN => 0.61 , ..., -0.64236529,
       -0.88137541, -0.78318609])
Run Code Online (Sandbox Code Playgroud)

Dav*_*uck 6

使用 Numpy,通过对两个数组应用布尔掩码来实现以下效果:

\n\n
import numpy as np\nx = np.array([0.9737068, np.nan, np.nan, -0.64236529, -0.88137541, -0.78318609])\ny = np.array([0.9, 0.7643, 0.61, -0.64236529, -0.88137541, -0.78318609])\n\nx[np.isnan(x)] = y[np.isnan(x)]\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果是

\n\n
In[1]:  x\nOut[1]: \narray([ 0.9737068 ,  0.7643    ,  0.61      , -0.64236529, -0.88137541,\n       -0.78318609])\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:使用 运行%timeit,此解决方案在重复运行中需要 < 4\xc2\xb5s,而其他两个 Numpy 解决方案(在撰写本文时)都需要 20-25\xc2\xb5s

\n