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.