Spec-Zone.ru › NumPy 1.15

numpy.ufunc.reduce

ufunc.reduce(a, axis=0, dtype=None, out=None, keepdims=False, initial)

Уменьшает размерность 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().

Параметры:
a : array_like

Массив, на котором будет выполняться операция.

axis : None or int or tuple of ints, optional

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

Добавлена в версии 1.7.0.

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

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

dtype : data-type code, optional

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

out : ndarray, None, or tuple of ndarray and None, optional

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

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

keepdims : bool, optional

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

Добавлена в версии 1.7.0.

initial : scalar, optional

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

Добавлена в версии 1.15.0.

Возвращает:
r : ndarray

Суммированный массив. Если 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 для инициализации уменьшения другим значением.

>>> np.add.reduce([10], initial=5)
15
>>> np.add.reduce(np.ones((2, 2, 2)), axis=(0, 2), initializer=10)
array([14., 14.])

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

>>> np.minimum.reduce([], initial=np.inf)
inf
>>> np.minimum.reduce([])
Traceback (most recent call last):
    ...
ValueError: zero-size array to reduction operation minimum which has no identity

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

Spec-Zone.ru

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