上一主题

numpy.apply_along_axis

下一主题

numpy.vectorize

numpy.apply_over_axes

numpy.apply_over_axes(func, a, axes)[source]

在多个轴上重复应用一个函数。

func被称为res = func(a,axis),其中的第一个元素。函数调用的结果res必须具有与a相同的维或一个更小的维。如果res的尺寸小于a,则在之前插入尺寸。然后对中的每个轴重复对func的调用,res作为第一个参数。

参数:

func:function

此函数必须带有两个参数,func(a,axis)

a:array_like

输入数组。

axes:array_like

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

返回:

apply_over_axis:ndarray

输出数组。尺寸的数量与a相同,但形状可以不同。这取决于func是否改变其输出相对于其输入的形状。

也可以看看

apply_along_axis
沿给定轴向数组的1-D切片应用函数。

笔记

这个函数相当于tuple轴参数,可重排序的ufuncs和keepdims = True。ufuncs的元组轴参数自版本1.7.0起已可用。

例子

>>> a = np.arange(24).reshape(2,3,4)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

在轴0和2上求和。结果具有与原始数组相同的维数:

>>> np.apply_over_axes(np.sum, a, [0,2])
array([[[ 60],
        [ 92],
        [124]]])

ufuncs的元组轴参数是等价的:

>>> np.sum(a, axis=(0,2), keepdims=True)
array([[[ 60],
        [ 92],
        [124]]])