检查两个条件是否为True的最快方法是什么?

时间:2011-09-12 02:35:08

标签: python numpy logical-operators

对于大型数组,检查多个条件是否为True或两者都为False的最快方法是什么?运营商的选择是否有所作为?为什么或者为什么不?这是一个虚拟的例子:

import numpy
a = numpy.ones((1000000,))
b = numpy.zeros((1000000,))

#c = (a == 1) * (b == 0)
#c = (a == 1) & (b == 0)
# other faster method of getting c?

通知编辑...

2 个答案:

答案 0 :(得分:0)

我不太确定这对速度有影响,但在这种情况下你可以通过使用就地操作来节省内存。

尝试类似:

c = a == 1
c &= b == 0 # (Or *=)

这应该需要少一个数组的临时副本并使用更少的内存。

答案 1 :(得分:0)

您可以利用Short-circuiting运营商。对于不同运营商的不同情况,这种短路是不同的。