用Pythonic方法用相同大小的数组替换nan子数组

Sim*_*ink 3 python numpy

假设我给了numpy这样一个数组:

a = np.array([1, 2, 3, 4, np.nan, 5, np.nan, 6, np.nan])
# [1, 2, 3, 4, nan, 5, nan, 6, nan]
Run Code Online (Sandbox Code Playgroud)

我知道nan数组中值的数量,并有相应的数组进行替换,例如:

b = np.array([12, 13, 14])
# [12, 13, 14]
Run Code Online (Sandbox Code Playgroud)

将数组替换b为所有nan值的pythonic 方法是什么,以便获得结果:

[1, 2, 3, 4, 12, 5, 13, 6, 14]
Run Code Online (Sandbox Code Playgroud)

yat*_*atu 6

a使用执行布尔索引,np.isnan并替换b为:

a[np.isnan(a)] = b
Run Code Online (Sandbox Code Playgroud)
print(a)
# array([ 1.,  2.,  3.,  4., 12.,  5., 13.,  6., 14.])
Run Code Online (Sandbox Code Playgroud)