Коротко
sum,mean,min,max,prodсворачивают весь массив в одно значение.argmin/argmax— индекс минимума / максимума (первого, если их несколько).- Почти всё доступно и как метод (
a.sum()), и как функция (np.sum(a)). Функция принимает и списки. any()/all()— есть ли хоть одинTrue/ все лиTrue.- По строкам или столбцам — параметр
axis, см. оси. Среднее с учётомNaN— nan-функции.
Синтаксис
a.sum(), a.mean(), a.min(), a.max(), a.prod()
a.argmin(), a.argmax() # индексы
np.ptp(a) # размах max − min
a.any(), a.all()
np.sum(a, axis=None, dtype=None, keepdims=False)Параметры
ПараметрЧто делаетПо умолчанию
axisось, по которой сворачивать; None — весь массивNonedtypeтип накопления, например float для суммы маленьких целыхNonekeepdimsоставить свёрнутую ось длиной 1Falseinitialначальное значение: для max/min делает пустой массив допустимымобязательныйПримеры
steps = np.array([6200, 8400, 5100, 12000, 9800, 3000, 7500]) # шаги за неделюprint(steps.sum(), steps.mean())
print(steps.min(), steps.max())
np.ptp(steps) # размах: max − minВывод
52000 7428.571428571428 3000 12000 np.int64(9000)
print(steps.argmin(), steps.argmax()) # индексы минимума и максимума
steps.argmax() + 1 # номер дня с максимумомВывод
5 3 np.int64(4)
print((steps > 10000).any())
(steps > 1000).all()Вывод
True np.True_
print(np.sum(steps) == steps.sum())
np.sum([1, 2, 3]) # функция работает и со спискомВывод
True np.int64(6)
Подводные камни
Метод ptp удалён
steps.ptp()Ошибка
AttributeError: 'numpy.ndarray' object has no attribute 'ptp'
Встроенные sum и max вместо методов NumPy
Встроенный sum перебирает массив по первой оси: для двумерного он складывает строки и возвращает массив, а не число. Кроме того, встроенные функции в десятки раз медленнее.
table = np.array([[1, 2],
[3, 4]])
print(sum(table)) # встроенный sum складывает строки
print(table.sum()) # сумма всех элементов
max(table[0]) # для одномерного встроенный работает, но медленноВывод
[4 6] 10 np.int64(2)
Максимум пустого массива
Сумма пустого массива — 0, а у минимума и максимума значения нет. Если массив может оказаться пустым, передайте initial= или проверьте a.size.
empty = np.array([])
print(empty.sum()) # сумма пустого — 0
empty.max() # у максимума нет значения по умолчаниюОшибка
0.0 ValueError: zero-size array to reduction operation maximum which has no identity