numpy.sum#

numpy.sum(a, axis=None, dtype=None, out=None, keepdims= значение>, initial=<нет значение>, where= значение>)[источник]#

Сумма элементов массива по заданной оси.

Параметры:
aarray_like

Элементы для суммирования.

осьNone или int или кортеж ints, опционально

Ось или оси, по которым выполняется суммирование. По умолчанию, axis=None, суммирует все элементы входного массива. Если axis отрицательный, он отсчитывается от последней к первой оси. Если axis является кортежем целых чисел, суммирование выполняется по всем осям, указанным в кортеже, а не по одной оси или всем осям, как раньше.

dtypedtype, опционально

Тип возвращаемого массива и аккумулятора, в котором суммируются элементы. Тип данных a используется по умолчанию, если a имеет целочисленный тип данных с меньшей точностью, чем целочисленный тип платформы по умолчанию. В этом случае, если a если знаковый, то используется целочисленный тип платформы, а если a является беззнаковым, то используется беззнаковое целое число той же точности, что и целое число платформы.

выходndarray, необязательно

Альтернативный выходной массив, в который помещается результат. Он должен иметь ту же форму, что и ожидаемый выход, но тип выходных значений будет приведён, если необходимо.

keepdimsbool, необязательно

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Если передано значение по умолчанию, то keepdims не будет передано в sum метод подклассов ndarray, однако любое нестандартное значение будет. Если метод подкласса не реализует keepdims любые исключения будут вызваны.

начальныйскаляр, опционально

Начальное значение для суммы. См. reduce подробности.

гдеarray_like из bool, необязательный

Элементы для включения в сумму. См. reduce подробности.

Возвращает:
sum_along_axisndarray

Массив с той же формой, что и a, с удалённой указанной осью. Если a является 0-мерным массивом, или если ось равно None, возвращается скаляр. Если указан выходной массив, возвращается ссылка на выход возвращается.

Смотрите также

ndarray.sum

Эквивалентный метод.

add

numpy.add.reduce эквивалентная функция.

cumsum

Кумулятивная сумма элементов массива.

trapezoid

Интеграция значений массива с использованием составного правила трапеций.

mean, average

Примечания

Арифметика является модульной при использовании целочисленных типов, и при переполнении ошибка не возникает.

Сумма пустого массива — нейтральный элемент 0:

>>> np.sum([])
0.0

Для чисел с плавающей точкой численная точность суммы (и np.add.reduce) в целом ограничена прямым добавлением каждого числа по отдельности к результату, что вызывает ошибки округления на каждом шаге. Однако часто numpy будет использовать численно лучший подход (частичное попарное суммирование), приводящий к улучшенной точности во многих случаях использования. Эта улучшенная точность всегда предоставляется, когда нет axis указан. Когда axis задано, это будет зависеть от того, по какой оси суммируется. Технически, чтобы обеспечить максимальную скорость, улучшенная точность используется только когда суммирование идет по быстрой оси в памяти. Обратите внимание, что точная точность может варьироваться в зависимости от других параметров. В отличие от NumPy, в Python math.fsum функция использует более медленный, но более точный подход к суммированию. Особенно при суммировании большого количества чисел с плавающей запятой низкой точности, таких как float32, числовые ошибки могут стать значительными. В таких случаях может быть целесообразно использовать dtype=”float64” использовать более высокую точность для вывода.

Примеры

>>> import numpy as np
>>> np.sum([0.5, 1.5])
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)
np.int32(1)
>>> np.sum([[0, 1], [0, 5]])
6
>>> np.sum([[0, 1], [0, 5]], axis=0)
array([0, 6])
>>> np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])
>>> np.sum([[0, 1], [np.nan, 5]], where=[False, True], axis=1)
array([1., 5.])

Если аккумулятор слишком мал, происходит переполнение:

>>> np.ones(128, dtype=np.int8).sum(dtype=np.int8)
np.int8(-128)

Вы также можете начать сумму со значения, отличного от нуля:

>>> np.sum([10], initial=5)
15