【问题标题】:Combine Iris constraints with OR?将 Iris 约束与 OR 结合起来?
【发布时间】:2017-07-31 09:51:30
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: python python-iris


    【解决方案1】:

    约束支持“&”运算符,但不支持“|”。
    我认为这样做的逻辑是,当应用于从多维数据集提取时,结果应该始终只是单个多维数据集——如果允许使用“或”,则情况并非总是如此.
    因此,对于立方体提取,您可以将约束视为指定“剪切形状”,它只允许为超矩形:这就像 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 个级别。
    再次,您可以看到为什么在立方体提取的上下文中 可行。

    【讨论】:

    • 感谢您的解释。在我的情况下,两个坐标都在同一个维度上,但我明白你的观点,一般来说这不会是真的(我知道如果你尝试在多维坐标上提取,Iris 会抛出异常,所以有一致性那里)。我认为对负载进行限制将适用于我的情况,或者我最好的选择可能是添加一个新坐标,其点是根据现有坐标上的点的函数计算的。
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多