在单个操作中替换 xarray.DataArray 中的多个值

问题描述 投票:0回答:1

我有一个包含整数值的光栅文件,我想用其他值替换其中一些值。理想情况下,我希望使用字典指定要替换的值,例如

{10:1, 2:20}
将所有 10 个值替换为 1,将所有 2 个值替换为 20。

目前我的解决方案是使用

.where
.fillna
进行两步操作,但我必须对每次替换应用此过程:

import xarray as xr

(
xr.DataArray([0,10,10,10,2,2,3])
.pipe(lambda x: x.where(x!=10).fillna(1))
.pipe(lambda x: x.where(x!=2).fillna(20))
)

当然,我可以将两步操作包装在具有两个参数(要替换的值和要替换的值)的函数中,但是如何在数组上迭代应用它?或者是否有更好的方法在单个函数调用中进行替换,例如相当于 pandas.DataFrame.replace

python dictionary replace python-xarray
1个回答
0
投票

Xarray 目前没有

replace
方法(GH 问题)。您应该能够重写代码以使用
other
 方法的 
where
参数:

x = xr.DataArray([0,10,10,10,2,2,3])
x.where(x != 10, 1).where(x != 2, 20)
© www.soinside.com 2019 - 2024. All rights reserved.