[英]Replace NaNs in masked numpy array
var[np.isnan(var)] = 0.0
var.shape
(50, 360, 720)
I want to replace NaNs in the array with 0.0. 我想用0.0替换数组中的NaN。 However, I get an error:
*** IndexError: Index cannot be multidimensional
但是,我收到一个错误:
*** IndexError: Index cannot be multidimensional
var[0]
masked_array(data =
[[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]],
mask =
[[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]
...,
[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]],
fill_value = nan)
How to fix it? 如何解决?
nan_to_num is the right way to do it. nan_to_num是正确的方法。 Here's a 2D example:
这是一个二维示例:
In [25]: arr = np.array([[10, 20], [np.nan, 30], [np.nan, -10]])
In [26]: arr
Out[26]:
array([[ 10., 20.],
[ nan, 30.],
[ nan, -10.]])
In [27]: np.nan_to_num(arr)
Out[27]:
array([[ 10., 20.],
[ 0., 30.],
[ 0., -10.]])
I believe nan_to_num
should work on masked arrays as well. 我相信
nan_to_num
应该在掩码数组上工作。 For example: 例如:
In [33]: mx = ma.masked_array([np.nan, 2, 3, 4], mask=[0, 0, 1, 0])
In [34]: mx.compressed()
Out[34]: array([ nan, 2., 4.])
And now: 现在:
In [36]: np.nan_to_num(ma.masked_array([np.nan, 2, 3, 4], mask=[0, 0, 1, 0])).compressed()
Out[36]: array([ 0., 2., 4.])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.