Spec-Zone.ru › NumPy 1.19

numpy.ufunc.reduce

метод

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

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

Пусть a.shape = (N_0, ..., N_i, ..., N_{M-1}). Тогда ufunc.reduce(a, axis=i)[k_0, ..,k_{i-1}, k_{i+1}, .., k_{M-1}] = результат итерации j по range(N_i), кумулятивно применяя ufunc к каждому a[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().

Параметры
aarray_like

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

axisNone or int or tuple of ints, optional

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

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

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

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

dtypedata-type code, optional

Тип, используемый для представления промежуточных результатов. По умолчанию используется тип данных выходного массива, если он задан, или тип данных входного массива, если выходной массив не задан.

outndarray, None, or tuple of ndarray and None, optional

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

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

keepdimsbool, optional

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

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

initialscalar, optional

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

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

wherearray_like of bool, optional

Булевый массив, который транслируется для соответствия размерностям a, и выбирает элементы, которые нужно включить в сокращение. Обратите внимание, что для 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.ufunc.reduce.html

Spec-Zone.ru

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