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)