【发布时间】:2019-03-24 15:32:17
【问题描述】:
我需要在一个大型二维“NUMPY”数组上评估许多逻辑条件,并将整体结果收集到一个布尔“RESULT”numpy 数组中。
所有条件都用 AND 语句链接的简单示例可能是:
RESULT= cond1(NUMPY) & cond2(NUMPY) & cond3(NUMPY) & ....
我想了解是否有优化性能的方法。
例如,在这种情况下,如果 NUMPY 数组中的大多数值的第一个条件 (cond1) 为 False,则评估这些值的所有其他条件将浪费资源,因为 AND 条件无论如何都会生成 False在最终的 RESULT 数组中。
有什么想法吗?
【问题讨论】:
-
Python
and和or短路,但仅适用于标量条件。使用整个numpy整个数组操作,评估每个条件,然后组合值。您必须使用numba或cython来构建更快的迭代测试来实现短路。 -
感谢您的解释和建议,我对 numba 和 cython 还不是很熟悉,但如果我没有找到其他方法,我会研究它们 :)
标签: python performance numpy optimization logic