Какой самый быстрый способ проверить, являются ли два условия истинными? - PullRequest
2 голосов
/ 12 сентября 2011

Для больших массивов, какой самый быстрый способ проверить, являются ли несколько условий ИСТИНА или ЛОЖЬ? Выбор оператора имеет значение? Почему или почему нет? Вот фиктивный пример:

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 голосов
/ 12 сентября 2011

Вы можете воспользоваться Short-circuiting операторами.И это короткое замыкание различно для разных ситуаций разных операторов.

0 голосов
/ 12 сентября 2011

Я не уверен, что это будет иметь значение для скорости, но вы можете сэкономить память, используя в этом случае операции на месте.

Попробуйте что-то вроде:

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

Этодолжно потребовать меньше временных копий массива и использовать меньше памяти.

...