В python, какой из них быстрее?
numpy.max(), numpy.min()
или
max(), min()
Мой список/длина массива варьируется от 2 до 600. Какой из них следует использовать для сохранения некоторого времени выполнения?
В python, какой из них быстрее?
numpy.max(), numpy.min()
или
max(), min()
Мой список/длина массива варьируется от 2 до 600. Какой из них следует использовать для сохранения некоторого времени выполнения?
Ну, из моих таймингов, если у вас уже есть массив numpy a
, вы должны использовать a.max
(источник сообщает ему то же, что и np.max
, если a.max
доступен). Но если у вас есть встроенный список, то большую часть времени он преобразует его в np.ndarray = > , поэтому max
лучше в ваших таймингах.
В сущности: если np.ndarray
then a.max
, если list
и нет необходимости в машинах np.ndarray
, тогда стандартный max
.
Это, вероятно, лучше, если вы используете что-то вроде Python timeit module, чтобы проверить его на себе. Таким образом, вы можете протестировать свои собственные данные в своей собственной среде, а не полагаться на третьих лиц с различными тестовыми данными и средами, которые не обязательно являются вашими.
Я также интересовался этим и тестировал три варианта с 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)'
)
numpy.min
и numpy.max
имеют немного отличающуюся семантику (и сигнатуру вызова) к встроенным, поэтому выбор не должен быть связан со скоростью. Используйте версии numpy, если вам нужно иметь дело с многомерными данными. Если вы просто используете списки Python или другие вещи, которые не знают о размерности, используйте встроенные функции.