python - 将 Iris 约束与 OR 结合起来?

标签 python python-iris

Iris 用户指南提供了大量有关将坐标约束与逻辑 AND 相结合的信息。是否也可以将它们与逻辑或结合起来?

我想提取立方体的部分,其中 (coord1 == x AND coord2 == y) OR (coord1 == z )。

谢谢。

最佳答案

约束确实支持“&”运算符,但不支持“|”。
我认为其逻辑是,当应用于从立方体中提取时,结果应该始终只是一个立方体 - 如果允许“OR”,则情况并非总是如此.
因此,对于立方体提取,您可以将约束视为指定“切口形状”,该形状只允许是超矩形:这就像 numpy 索引操作一样。

事实上,您建议的确切情况“(x=1 and y=2) or z=3”是一个反例:结果并不总是“正方形”,因此通常不能是单个立方体。

但是,从一组数据文件加载的情况有些不同:结果可能有多个形状不兼容的立方体。
在这种情况下,您有时可以使用“立方函数”类型的约束来选择数据部分,可能使用类似“或”的逻辑。
但是,结果将取决于源数据格式,即它最初加载并从中选择的“原始立方体”是什么。
例如,一个立方体函数如下:

def cubefn(cube):
    return (cube.name() == 'air_temperature' or
            cube.coord('model_level').points[0] < 7)

这可能会导致所有级别上的空气温度立方体,以及各种其他立方体都仅限于前 7 个级别。
再次,您可以明白为什么在立方体提取的上下文中可行。

关于python - 将 Iris 约束与 OR 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45412581/

相关文章:

Python:使用多边形在给定的二维网格上创建蒙版

Python - 全局名称未定义

python - 显式等待 Python3 中存在的元素

Python For 循环仅将最后一个值追加到列表中

python - 从文件对象或 netCDF4 数据集创建 Iris Cube

python - 使用 matplotlib 在垂直横截面上绘制风矢量

python - 序列化器测试 serializer.is_valid() = False

python - 未找到子进程调用无效参数或选项

python-iris - 是否可以基于 cell_methods 创建虹膜约束?