Самый быстрый способ подсчитать значения массива выше порогового значения в numpyPython

Программы на Python
Anonymous
Самый быстрый способ подсчитать значения массива выше порогового значения в numpy

Сообщение Anonymous »

У меня есть массив numpy, содержащий 10^8 чисел с плавающей запятой, и я хочу посчитать, сколько из них >= заданного порога. Скорость имеет решающее значение, поскольку операцию приходится выполнять с большим количеством таких массивов. На данный момент участниками являются

Код: Выделить всё

np.sum(myarray >= thresh)

np.size(np.where(np.reshape(myarray,-1) >= thresh))
Ответы в разделе «Подсчитать все значения в матрице, превышающие значение», предполагают, что np.where() будет работать быстрее, но я обнаружил противоречивые результаты по времени. Я имею в виду, что для некоторых реализаций и логических условий np.size(np.where(cond)) работает быстрее, чем np.sum(cond), но для некоторых он медленнее.

В частности, если большая часть записей соответствует условию, то np.sum(cond) работает значительно быстрее, но если небольшая часть (возможно, менее десятой части) выполняет это условие, тогда np.size(np.where(cond)) побеждает.

Вопрос разбивается на две части:
  • Есть еще предложения?< /li>
    Имеет ли смысл, что время, затрачиваемое np.size(np.where(cond)) увеличивается с количеством записей, для которых cond истинно?


Подробнее здесь: https://stackoverflow.com/questions/213 ... d-in-numpy

Вернуться в «Python»