У меня есть массив 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