numpy.ufunc.reduce
метод
-
ufunc.reduce(a, axis=0, dtype=None, out=None, keepdims=False, initial=<no value>, where=True) -
Уменьшает размерность
aна единицу, применяя ufunc вдоль одной оси.Пусть
. Тогда
= результат итерации
jпо, кумулятивно применяя ufunc к каждому
. Для одномерного массива 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