对于大型数组,检查多个条件是否为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?
通知编辑...
答案 0 :(得分:0)
我不太确定这对速度有影响,但在这种情况下你可以通过使用就地操作来节省内存。
尝试类似:
c = a == 1
c &= b == 0 # (Or *=)
这应该需要少一个数组的临时副本并使用更少的内存。
答案 1 :(得分:0)
您可以利用Short-circuiting
运营商。对于不同运营商的不同情况,这种短路是不同的。