Spec-Zone.ru › NumPy 2.0

numpy.ufunc.reduce

метод

ufunc.reduce(array, axis=0, dtype=None, out=None, keepdims=False, initial=<no value>, where=True)

Уменьшает размерность массива array на единицу, применяя ufunc вдоль одной оси.

Пусть \(array.shape = (N_0, ..., N_i, ..., N_{M-1})\). Тогда \(ufunc.reduce(array, axis=i)[k_0, ..,k_{i-1}, k_{i+1}, .., k_{M-1}]\) = результат итерации j по \(range(N_i)\), кумулятивно применяя ufunc к каждому \(array[k_0, ..,k_{i-1}, j, k_{i+1}, .., k_{M-1}]\). Для одномерного массива reduce производит результаты, эквивалентные:

r = op.identity # op = ufunc
for i in range(len(A)):
  r = op(r, A[i])
return r

Например, add.reduce() эквивалентно sum().

Параметры:
arrayarray_like

Массив, к которому применяется операция.

axisNone или int или кортеж из целых чисел, необязательно

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

Введено в версии 1.7.0.

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

Для операций, которые не являются коммутативными или ассоциативными, выполнение уменьшения по нескольким осям не определено. В настоящее время ufuncs не генерируют исключение в этом случае, но, вероятно, будут делать это в будущем.

dtypeкод типа данных, необязательно

Тип данных, используемый для выполнения операции. По умолчанию — тот же, что и у out , если задан, и тип данных array в противном случае (хотя приведение к типу с большей точностью выполняется в некоторых случаях, таких как numpy.add.reduce для целочисленных или логических входных данных).

outndarray, None или кортеж из ndarray и None, необязательно

Местоположение, в которое сохраняется результат. Если не указано или равно None, возвращается только что выделенный массив. Для согласованности с ufunc.__call__, если задано в качестве ключевого слова, это может быть обернуто в кортеж из одного элемента.

Изменено в версии 1.13.0: Разрешены кортежи для ключевого аргумента.

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

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

Введено в версии 1.7.0.

initialскаляр, необязательно

Значение, с которого начинается уменьшение. Если у ufunc нет идентичности или dtype — object, по умолчанию None — в противном случае он равен ufunc.identity. Если None задан, первый элемент уменьшения используется, и выводится ошибка, если уменьшение пустое.

Введено в версии 1.15.0.

wherearray_like из bool, необязательно

Логический массив, который транслируется для соответствия размерностям array и выбирает элементы, которые включаются в уменьшение. Обратите внимание, что для ufuncs, таких как minimum, у которых не определена идентичность, необходимо также передать initial.

Введено в версии 1.17.0.

Возвращаемое значение:
rndarray

Уменьшенный массив. Если out был предоставлен, r является ссылкой на него.

Примеры

>>> np.multiply.reduce([2,3,5])
30

Пример с многомерным массивом:

>>> X = np.arange(8).reshape((2,2,2))
>>> X
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> np.add.reduce(X, 0)
array([[ 4,  6],
       [ 8, 10]])
>>> np.add.reduce(X) # confirm: default axis value is 0
array([[ 4,  6],
       [ 8, 10]])
>>> np.add.reduce(X, 1)
array([[ 2,  4],
       [10, 12]])
>>> np.add.reduce(X, 2)
array([[ 1,  5],
       [ 9, 13]])

Вы можете использовать ключевой аргумент initial для инициализации уменьшения другим значением и where для выбора конкретных элементов для включения:

>>> np.add.reduce([10], initial=5)
15
>>> np.add.reduce(np.ones((2, 2, 2)), axis=(0, 2), initial=10)
array([14., 14.])
>>> a = np.array([10., np.nan, 10])
>>> np.add.reduce(a, where=~np.isnan(a))
20.0

Разрешает уменьшения пустых массивов, где они обычно терпят неудачу, т. е. для ufuncs без идентичности.

>>> np.minimum.reduce([], initial=np.inf)
inf
>>> np.minimum.reduce([[1., 2.], [3., 4.]], initial=10., where=[True, False])
array([ 1., 10.])
>>> np.minimum.reduce([])
Traceback (most recent call last):
    ...
ValueError: zero-size array to reduction operation minimum which has no identity

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.ufunc.reduce.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API