根据坐标而不是索引更改虹膜立方体中的值

问题描述

我希望能够根据坐标而不是索引更改 iris 中的值。

例如,考虑以下立方体,并说我希望将值从 -45N 设置为 45N,将 160E 到 240E 设置为 1:

import iris
import numpy as np
from iris.coords import DimCoord
from iris.cube import Cube

latitude_vals = np.linspace(-90,90,4)
longitude_vals = np.linspace(45,360,8)
latitude = DimCoord(latitude_vals,standard_name="latitude",units="degrees")
longitude = DimCoord(longitude_vals,standard_name="longitude",units="degrees")
cube = Cube(
    np.zeros((4,8),np.float32),dim_coords_and_dims=[(latitude,0),(longitude,1)]
)

在这个例子中,我想要的可以通过调用 xarray 来完成:

import xarray as xr
da = xr.DataArray.from_iris(cube)
da.loc[dict(latitude=slice(-45,45),longitude=slice(160,240))] = 1

但这是否可以完全在 iris 内完成,而不必求助于手动指定索引?

手动指定索引的示例:

cube.data[1:3,3:5] = cube.data[1:3,3:5] + 1

更新(2021 年 1 月 22 日):这是一个已知问题,请参阅 this cross-post 和相关讨论的链接

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)