numpy.ma.apply_over_axes#

ma.apply_over_axes(func, a, axes)[源代码]#

将函数重复应用于多个轴。

func 被调用为 res = func(a, axis),其中 axisaxes 的第一个元素。函数调用的结果 res 必须与 a 具有相同的维度,或者少一个维度。如果 res 的维度比 a 少一个,则会在 axis 之前插入一个维度。然后,对于 axes 中的每个轴,以 res 作为第一个参数,重复调用 func

参数:
funcfunction

此函数必须接受两个参数:func(a, axis)

a类数组对象

输入数组。

axesarray_like

func 应用的轴;元素必须是整数。

返回:
apply_over_axisndarray

输出数组。维度数量与 a 相同,但形状可能不同。这取决于 func 是否改变了相对于输入的输出形状。

另请参阅

apply_along_axis

沿给定轴将函数应用于数组的 1D 切片。

示例

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