gpt4 book ai didi

python - 用 None 替换 xarray 数据集中的值

转载 作者:太空狗 更新时间:2023-10-30 02:37:27 24 4
gpt4 key购买 nike

我想用 None 替换 xarray 数据集中变量中的值。我试过这种方法,但没有用:

da[da['var'] == -9999.]['var'] = None

我收到此错误:*** TypeError: unhashable type: 'numpy.ndarray'

我可以在这里使用类似 numpy replace 的东西吗? da 是 xarray 数据集。这是 da 的样子:

<xarray.Dataset>
Dimensions: (band: 1, time: 3, x: 4258, y: 2334)
Coordinates:
* band (band) int32 1
* y (y) float64 4.406e+06 4.406e+06 4.406e+06 4.406e+06 4.406e+06 ...
* x (x) float64 1.125e+05 1.126e+05 1.127e+05 1.128e+05 1.129e+05 ...
* time (time) datetime64[ns] 2005-12-31 2006-12-31 2007-12-31
Data variables:
var (time, band, y, x) float32 dask.array<shape=(3, 1, 2334, 4258), chunksize=(1, 1, 2334, 4258)>

这是 da.var 的样子:

<xarray.DataArray 'var' (time: 3, band: 1, y: 2334, x: 4258)>
dask.array<shape=(3, 1, 2334, 4258), dtype=float32, chunksize=(1, 1, 2334, 4258)>
Coordinates:
* band (band) int32 1
* y (y) float64 4.406e+06 4.406e+06 4.406e+06 4.406e+06 4.406e+06 ...
* x (x) float64 1.125e+05 1.126e+05 1.127e+05 1.128e+05 1.129e+05 ...
* time (time) datetime64[ns] 2005-12-31 2006-12-31 2007-12-31
Attributes:
transform: (90.0, 0.0, 112500.0, 0.0, -90.0, 4406400.0, 0.0, 0.0, 1.0)
crs: +ellps=GRS80 +no_defs +proj=utm +towgs84=0,0,0,0,0,0,0 +unit...
res: (90.0, 90.0)
is_tiled: 1
nodatavals: (-9999.0,)

最佳答案

执行此操作的标准方法是使用 where: http://xarray.pydata.org/en/latest/indexing.html#masking-with-where

# Note that I'm going to use `ds` instead of the OP's `da`

# replace all values equal to -9999 with np.nan
ds_masked = ds.where(ds['var'] != -9999.)

关于python - 用 None 替换 xarray 数据集中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50123923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com