numpy.ma.apply_over_axes#

ma.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 срезам массива вдоль заданной оси.

Примеры

>>> import numpy as np
>>> a = np.ma.arange(24).reshape(2,3,4)
>>> a[:,0,1] = np.ma.masked
>>> a[:,1,:] = np.ma.masked
>>> a
masked_array(
  data=[[[0, --, 2, 3],
         [--, --, --, --],
         [8, 9, 10, 11]],
        [[12, --, 14, 15],
         [--, --, --, --],
         [20, 21, 22, 23]]],
  mask=[[[False,  True, False, False],
         [ True,  True,  True,  True],
         [False, False, False, False]],
        [[False,  True, False, False],
         [ True,  True,  True,  True],
         [False, False, False, False]]],
  fill_value=999999)
>>> np.ma.apply_over_axes(np.ma.sum, a, [0,2])
masked_array(
  data=[[[46],
         [--],
         [124]]],
  mask=[[[False],
         [ True],
         [False]]],
  fill_value=999999)

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

>>> np.ma.sum(a, axis=(0,2)).reshape((1,-1,1))
masked_array(
  data=[[[46],
         [--],
         [124]]],
  mask=[[[False],
         [ True],
         [False]]],
  fill_value=999999)