Подтвердить что ты не робот

Numpy.max или max? Какой из них быстрее?

В python, какой из них быстрее?

numpy.max(), numpy.min()

или

max(), min()

Мой список/длина массива варьируется от 2 до 600. Какой из них следует использовать для сохранения некоторого времени выполнения?

4b9b3361

Ответ 1

Ну, из моих таймингов, если у вас уже есть массив numpy a, вы должны использовать a.max (источник сообщает ему то же, что и np.max, если a.max доступен). Но если у вас есть встроенный список, то большую часть времени он преобразует его в np.ndarray = > , поэтому max лучше в ваших таймингах.

В сущности: если np.ndarray then a.max, если list и нет необходимости в машинах np.ndarray, тогда стандартный max.

Ответ 2

Это, вероятно, лучше, если вы используете что-то вроде Python timeit module, чтобы проверить его на себе. Таким образом, вы можете протестировать свои собственные данные в своей собственной среде, а не полагаться на третьих лиц с различными тестовыми данными и средами, которые не обязательно являются вашими.

Ответ 3

Я также интересовался этим и тестировал три варианта с perfplot (мой маленький проект). Результат: вы не ошибетесь с a.max().

введите описание изображения здесь

Код для воспроизведения сюжета:

import numpy
import perfplot

perfplot.show(
    setup=lambda n: numpy.random.rand(n),
    kernels=[
        max,
        numpy.max,
        lambda a: a.max()
        ],
    labels=['max(a)', 'numpy.max(a)', 'a.max()'],
    n_range=[2**k for k in range(20)],
    logx=True,
    logy=True,
    xlabel='len(a)'
    )

Ответ 4

numpy.min и numpy.max имеют немного отличающуюся семантику (и сигнатуру вызова) к встроенным, поэтому выбор не должен быть связан со скоростью. Используйте версии numpy, если вам нужно иметь дело с многомерными данными. Если вы просто используете списки Python или другие вещи, которые не знают о размерности, используйте встроенные функции.