xarray - 根据另一个变量的条件计算一个变量
xarray - computation on one variable based on condition of anther variable
使用 Python 3.6.5 和 xarray 0.12.1,我创建了一个名为 ds_merge
的数据集,其中两个名为 v1
和 v2
的变量合并在一起。
我需要根据 v2
.
的值对 v1
进行计算
print(ds_merge)
<xarray.Dataset>
Dimensions: (x: 2, y: 3)
Coordinates:
* x (x) <U1 'a' 'b'
* y (y) <U1 'A' 'B' 'C'
Data variables:
v1 (x, y) float64 0.8332 0.09855 1.477 0.6563 -0.1991 -0.9999
v2 (x, y) bool True True True True False False
我想实现的是只在v2
为True
的情况下,将v1
乘以10,这样ds_merge
就是:
<xarray.Dataset>
Dimensions: (x: 2, y: 3)
Coordinates:
* x (x) <U1 'a' 'b'
* y (y) <U1 'A' 'B' 'C'
Data variables:
v1 (x, y) float64 8.332 0.9855 14.77 6.563 -0.1991 -0.9999
v2 (x, y) bool True True True True False False
xarray 似乎不支持 2-dim 布尔索引。但是 numpy 可以,所以你可以这样做:
ds_merge['v1'].values[ds_merge['v2'].values] *= 10
使用 Python 3.6.5 和 xarray 0.12.1,我创建了一个名为 ds_merge
的数据集,其中两个名为 v1
和 v2
的变量合并在一起。
我需要根据 v2
.
v1
进行计算
print(ds_merge)
<xarray.Dataset>
Dimensions: (x: 2, y: 3)
Coordinates:
* x (x) <U1 'a' 'b'
* y (y) <U1 'A' 'B' 'C'
Data variables:
v1 (x, y) float64 0.8332 0.09855 1.477 0.6563 -0.1991 -0.9999
v2 (x, y) bool True True True True False False
我想实现的是只在v2
为True
的情况下,将v1
乘以10,这样ds_merge
就是:
<xarray.Dataset>
Dimensions: (x: 2, y: 3)
Coordinates:
* x (x) <U1 'a' 'b'
* y (y) <U1 'A' 'B' 'C'
Data variables:
v1 (x, y) float64 8.332 0.9855 14.77 6.563 -0.1991 -0.9999
v2 (x, y) bool True True True True False False
xarray 似乎不支持 2-dim 布尔索引。但是 numpy 可以,所以你可以这样做:
ds_merge['v1'].values[ds_merge['v2'].values] *= 10