numpy.apply_over_axes()
Функция numpy.apply_over_axes() многократно применяет редуцирующую функцию func к массиву по списку осей. На каждом шаге результат сохраняет размерность исходного массива (как при keepdims=True).
Сигнатура
numpy.apply_over_axes(func, a, axes)
Параметры
func— функция-редьюсер сигнатурыfunc(arr, axis), возвращающая массив той же или редуцированной формы.a— входной массив.axes— ось или последовательность осей, по которым нужно последовательно применитьfunc.
Возвращаемое значение
ndarray с той же размерностью, что и a: редуцированные оси имеют длину 1.
Примеры
Пример 1. Сумма по двум осям 3D-массива.
import numpy as np
a = np.arange(24).reshape(2, 3, 4)
print(np.apply_over_axes(np.sum, a, [0, 2]))
[[[ 60]
[ 92]
[124]]]
Пример 2. Среднее значение вдоль одной оси.
m = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
print(np.apply_over_axes(np.mean, m, [1]))
[[2.]
[5.]]
Пример 3. Максимум по нескольким осям подряд.
a = np.arange(12).reshape(2, 2, 3)
print(np.apply_over_axes(np.max, a, [0, 1]))
[[[ 9 10 11]]]
Пример 4. Суммарный заряд по каналам и тактам.
# 2 устройства × 3 канала × 4 такта
charge = np.array([[[1, 2, 3, 4],
[2, 3, 4, 5],
[0, 1, 2, 3]],
[[5, 6, 7, 8],
[4, 3, 2, 1],
[1, 1, 1, 1]]])
total = np.apply_over_axes(np.sum, charge, [1, 2])
print(total)
[[[30]]
[[40]]]
Пример 5. Сравнение с keepdims-вызовом.
m = np.arange(6).reshape(2, 3)
print(np.apply_over_axes(np.sum, m, [0]))
print(np.sum(m, axis=0, keepdims=True))
[[3 5 7]]
[[3 5 7]]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.