Spec-Zone.ru › NumPy 1.18

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 нет тождества или тип данных является объектом, это по умолчанию 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.18/reference/generated/numpy.ufunc.reduce.html

Spec-Zone.ru

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