numpy.sum
-
numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)[source] -
Сумма элементов массива по заданной оси.
Параметры: -
a : array_like -
Элементы для суммирования.
-
axis : None or int or tuple of ints, optional -
Ось или оси, по которым выполняется суммирование. По умолчанию, axis=None, суммирует все элементы входного массива. Если axis отрицательный, он отсчитывается от последней до первой оси.
Добавлена в версии 1.7.0.
Если axis является кортежем целых чисел, суммирование выполняется по всем осям, указанным в кортеже, вместо одной оси или всех осей, как раньше.
-
dtype : dtype, optional -
Тип возвращаемого массива и аккумулятора, в котором суммируются элементы. Тип
aиспользуется по умолчанию, если уaнет целочисленного типа с меньшей точностью, чем по умолчанию. В этом случае, еслиaсо знаком, используется целочисленный тип платформы, а еслиaбез знака, используется целое без знака той же точности, что и целочисленный тип платформы. -
out : ndarray, optional -
Альтернативный выходной массив, в который поместить результат. Он должен иметь ту же форму, что и ожидаемый результат, но тип выходных значений будет приведен, если необходимо.
-
keepdims : bool, optional -
Если это значение установлено в True, оси, которые были уменьшены, остаются в результате как измерения с размером один. С этим вариантом результат будет правильно транслироваться по отношению к входному массиву.
Если передано значение по умолчанию, то
keepdimsне будет передано методуsumподклассовndarray, однако любое отличное от значения по умолчанию будет. Если метод подкласса не реализуетkeepdims, будут подняты исключения. -
initial : scalar, optional -
Начальное значение суммы. Смотрите
reduceдля получения подробной информации.Добавлена в версии 1.15.0.
-
where : array_like of bool, optional -
Элементы, которые нужно включить в сумму. Смотрите
reduceдля получения подробной информации.Добавлена в версии 1.17.0.
Возвращает: -
sum_along_axis : ndarray -
Массив с той же формой, что и
a, с удаленной указанной осью. Еслиaявляется 0-мерным массивом или еслиaxisравно None, возвращается скаляр. Если задан выходной массив, возвращается ссылка наout.
См. также
-
ndarray.sum - Эквивалентный метод.
-
add.reduce - Эквивалентная функциональность
add. -
cumsum - Кумулятивная сумма элементов массива.
-
trapz - Интегрирование значений массива с помощью составного правила трапеций.
Примечания
Арифметика является модульной при использовании целочисленных типов, и при переполнении не возникает ошибок.
Сумма пустого массива является нейтральным элементом 0:
>>> np.sum([]) 0.0
Для чисел с плавающей точкой числовая точность суммы (и
np.add.reduce) в общем случае ограничена непосредственным добавлением каждого числа по отдельности к результату, что приводит к ошибкам округления на каждом шаге. Однако часто NumPy использует более точный численный подход (частичное попарное суммирование), что повышает точность во многих случаях использования. Эта улучшенная точность всегда обеспечивается, когда не указанaxis. Когдаaxisзадан, это будет зависеть от того, по какой оси производится суммирование. Технически, для обеспечения наилучшей скорости, улучшенная точность используется только тогда, когда суммирование выполняется по быстрой оси в памяти. Обратите внимание, что точность может отличаться в зависимости от других параметров. В отличие от NumPy, функцияmath.fsumPython использует более медленный, но более точный подход к суммированию. Особенно при суммировании большого количества чисел с плавающей точкой с меньшей точностью, таких какfloat32, числовые ошибки могут стать значительными. В таких случаях может быть целесообразно использоватьdtype=”float64”для использования более высокой точности для выходных данных.Примеры
>>> np.sum([0.5, 1.5]) 2.0 >>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=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) -128
Вы также можете начать суммирование со значения, отличного от нуля:
>>> np.sum([10], initial=5) 15
-
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.sum.html