numpy.apply_over_axes#

numpy.apply_over_axes(функция, a, оси)[источник]#

Применить функцию многократно по нескольким осям.

функция вызывается как res = func(a, axis), где ось является первым элементом оси. Результат res вызова функции должны иметь либо те же размерности, что и a или на одно измерение меньше. Если res имеет на одно измерение меньше, чем a, измерение вставляется перед ось. Вызов функция затем повторяется для каждой оси в оси, с res в качестве первого аргумента.

Параметры:
функцияфункция

Эта функция должна принимать два аргумента, func(a, axis).

aarray_like

Входной массив.

осиarray_like

Оси, по которым функция применяется; элементы должны быть целыми числами.

Возвращает:
apply_over_axisndarray

Выходной массив. Количество измерений такое же, как a, но форма может быть разной. Это зависит от того, является ли функция изменяет форму своего вывода относительно ввода.

Смотрите также

apply_along_axis

Применить функцию к 1-D срезам массива вдоль заданной оси.

Примечания

Эта функция эквивалентна аргументам оси в виде кортежа для переупорядочиваемых универсальных функций с keepdims=True. Аргументы оси в виде кортежа для универсальных функций доступны с версии 1.7.0.

Примеры

>>> import numpy as np
>>> a = np.arange(24).reshape(2,3,4)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

Суммирование по осям 0 и 2. Результат имеет то же количество измерений, что и исходный массив:

>>> np.apply_over_axes(np.sum, a, [0,2])
array([[[ 60],
        [ 92],
        [124]]])

Аргументы оси в виде кортежа для ufunc эквивалентны:

>>> np.sum(a, axis=(0,2), keepdims=True)
array([[[ 60],
        [ 92],
        [124]]])