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