gpt4 book ai didi

python - 具有多个条件的 xarray.where()

转载 作者:行者123 更新时间:2023-11-28 21:44:33 25 4
gpt4 key购买 nike

我有一个包含土地覆盖类型的数据数组。我想屏蔽列表中的某些值。是否可以在多个条件下使用 xr.where() 函数?

import numpy as np
import xarray as xr
a = xr.DataArray(np.arange(25).reshape(5, 5), dims=('x', 'y'))
print a
LC = [10,12,19]
a.where((a == LC[0]) | (a == LC[1]))

给出:

 <xarray.DataArray (x: 5, y: 5)>
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
Coordinates:
* x (x) int64 0 1 2 3 4
* y (y) int64 0 1 2 3 4

<xarray.DataArray (x: 5, y: 5)>
array([[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan],
[ 10., nan, 12., nan, nan],
[ nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan]])
Coordinates:
* x (x) int64 0 1 2 3 4
* y (y) int64 0 1 2 3 4

以上适用于两个土地覆盖值,但对 30 种类型执行此操作很乏味。有没有更好的办法?

最佳答案

xr.DataArray(np.in1d(a, LC).reshape(a.shape),
dims=a.dims, coords=a.coords)

应该这样做:

<xarray.DataArray (x: 5, y: 5)>
array([[False, False, False, False, False],
[False, False, False, False, False],
[ True, False, True, False, False],
[False, False, False, False, True],
[False, False, False, False, False]], dtype=bool)
Coordinates:
* x (x) int64 0 1 2 3 4
* y (y) int64 0 1 2 3 4

关于python - 具有多个条件的 xarray.where(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40538243/

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