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 или int или кортеж из целых чисел, необязательно
-
Ось или оси, по которым выполняется уменьшение. По умолчанию (
axis= 0) выполняется уменьшение по первой размерности входного массива.axisможет быть отрицательным, в этом случае он считает от последней до первой оси.Введено в версии 1.7.0.
Если это None, уменьшение выполняется по всем осям. Если это кортеж целых чисел, уменьшение выполняется по нескольким осям вместо одной оси или всех осей, как и раньше.
Для операций, которые не являются коммутативными или ассоциативными, выполнение уменьшения по нескольким осям не определено. В настоящее время ufuncs не генерируют исключение в этом случае, но, вероятно, будут делать это в будущем.
- dtypeкод типа данных, необязательно
-
Тип данных, используемый для выполнения операции. По умолчанию — тот же, что и у
out, если задан, и тип данныхarrayв противном случае (хотя приведение к типу с большей точностью выполняется в некоторых случаях, таких какnumpy.add.reduceдля целочисленных или логических входных данных). - outndarray, None или кортеж из ndarray и None, необязательно
-
Местоположение, в которое сохраняется результат. Если не указано или равно None, возвращается только что выделенный массив. Для согласованности с
ufunc.__call__, если задано в качестве ключевого слова, это может быть обернуто в кортеж из одного элемента.Изменено в версии 1.13.0: Разрешены кортежи для ключевого аргумента.
- keepdimsbool, необязательно
-
Если это True, оси, которые были уменьшены, остаются в результате в качестве размерностей с размером один. С этим параметром результат будет правильно транслироваться по отношению к исходному
array.Введено в версии 1.7.0.
- initialскаляр, необязательно
-
Значение, с которого начинается уменьшение. Если у ufunc нет идентичности или dtype — object, по умолчанию 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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.ufunc.reduce.html