1

我希望能够根据坐标而不是索引来更改 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 日):这是一个已知问题,请参阅此交叉帖子和相关讨论的链接。

4

0 回答 0