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]]])