将Iris约束与OR相结合?

时间:2017-07-31 09:51:31

标签: python python-iris

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

我想提取多维数据集的部分位置(coord1 == xcoord2 == y)或(coord1 == z)。

感谢。

1 个答案:

答案 0 :(得分:1)

约束确实支持“&”操作员,但不是“|” 我认为其逻辑是,应用于从多维数据集中提取时,结果应始终只是一个多维数据集 - 如果允许“OR”则不会总是如此。
因此,对于多维数据集提取,您可以将约束视为指定“剪切形状”,它只允许为超矩形:这就像numpy索引操作。

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

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

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

这可能导致所有级别的气温立方体,并且各种其他立方体都限制在前7个级别 同样,您可以在多维数据集提取的上下文中看到的原因。