从 netCDF 替换数组中的值
Replacing values in array from netCDF
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]]
[[ 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]]
[[ 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]]
...,
[[ 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]]
[[ 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]]
[[ 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 = 9e+20)
我正在从 netCDF 文件中读取上面的掩码数组。第一个切片如下所示:
val[0].data
array([[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
...,
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20]], dtype=float32)
如何将 8.99999983e+20 值替换为 0.0?我认为这些是 fill_values 但使用 ma.set_fill_value(val, 0.0)
不起作用(它只会将 `fill_value 更改为 0.0,但不会更改 8.99999983e+20
掩码数组最酷的地方在于数据和掩码是分开的。 fill_value
属性只影响屏蔽数组的 filled()
方法,不影响数据:
>>> import numpy as np
>>> x = np.ma.array([1, 2, 3, 4], mask=[0, 0, 1, 1])
>>> x
masked_array(data = [1 2 -- --],
mask = [False False True True],
fill_value = 999999)
>>> x.filled()
array([ 1, 2, 999999, 999999])
>>> x.set_fill_value(-999)
>>> x.filled()
array([ 1, 2, -999, -999])
>>> x.data
array([1, 2, 3, 4])
你的情况
val.set_fill_value(0)
print val.filled()
或者 val.filled(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]]
[[ 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]]
[[ 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]]
...,
[[ 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]]
[[ 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]]
[[ 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 = 9e+20)
我正在从 netCDF 文件中读取上面的掩码数组。第一个切片如下所示:
val[0].data
array([[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
...,
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20],
[ 8.99999983e+20, 8.99999983e+20, 8.99999983e+20, ...,
8.99999983e+20, 8.99999983e+20, 8.99999983e+20]], dtype=float32)
如何将 8.99999983e+20 值替换为 0.0?我认为这些是 fill_values 但使用 ma.set_fill_value(val, 0.0)
不起作用(它只会将 `fill_value 更改为 0.0,但不会更改 8.99999983e+20
掩码数组最酷的地方在于数据和掩码是分开的。 fill_value
属性只影响屏蔽数组的 filled()
方法,不影响数据:
>>> import numpy as np
>>> x = np.ma.array([1, 2, 3, 4], mask=[0, 0, 1, 1])
>>> x
masked_array(data = [1 2 -- --],
mask = [False False True True],
fill_value = 999999)
>>> x.filled()
array([ 1, 2, 999999, 999999])
>>> x.set_fill_value(-999)
>>> x.filled()
array([ 1, 2, -999, -999])
>>> x.data
array([1, 2, 3, 4])
你的情况
val.set_fill_value(0)
print val.filled()
或者 val.filled(0)
应该可以解决问题。