Iris 用户指南提供了大量关于将坐标约束与逻辑 AND 组合的信息。是否也可以将它们与逻辑 OR 结合起来?
我想提取立方体的一部分,其中(coord1 == x
AND coord2 == y
)OR(coord1 == z
)。
谢谢。
Iris 用户指南提供了大量关于将坐标约束与逻辑 AND 组合的信息。是否也可以将它们与逻辑 OR 结合起来?
我想提取立方体的一部分,其中(coord1 == x
AND coord2 == y
)OR(coord1 == z
)。
谢谢。
约束确实支持“&”运算符,但不支持“|”。
我认为这样做的逻辑是,当应用于从多维数据集提取时,结果应该始终只是一个多维数据集——如果允许使用“或”,则情况并非总是如此。
因此,对于多维数据集提取,您可以将约束视为指定“剪切形状”,仅允许为超矩形:这就像 numpy 索引操作。
实际上,您建议“(x = 1 and y = 2)或z = 3”的确切情况是一个反例:结果并不总是“正方形”,因此通常不能是单个立方体。
然而,从一组数据文件加载的情况有些不同:结果可能有多个形状不兼容的立方体。
在这种情况下,您有时可以使用“立方体函数”类型的约束来选择部分数据,可能使用类似“或”的逻辑。
然而,结果将取决于源数据格式,即它最初加载的“原始多维数据集”是什么,因此从中选择。
例如,一个多维数据集函数,如:
def cubefn(cube):
return (cube.name() == 'air_temperature' or
cube.coord('model_level').points[0] < 7)
这可能会导致所有级别的空气温度立方体,而其他各种立方体都限制在前 7 个级别。
同样,您可以看到为什么这在多维数据集提取的上下文中不可行。