Spec-Zone.ru › NumPy 1.20

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 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 элемента.

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

keepdimsbool, optional

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

Новое в версии 1.7.0.

initialscalar, optional

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

Новое в версии 1.15.0.

wherearray_like of bool, optional

Булевый массив, который транслируется для соответствия размерностям 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.ufunc.reduce.html

Spec-Zone.ru

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