Spec-Zone.ru › NumPy 1.21

numpy.ufunc.reduce

метод

ufunc.reduce(array, axis=0, dtype=None, out=None, keepdims=False, initial=, 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код типа данных, необязательно

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

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

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

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

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

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

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

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

Значение, с которого начинается редукция. Если у ufunc нет идентичности или dtype является объектом, это по умолчанию 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.ufunc.reduce.html

Spec-Zone.ru

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