📅  最后修改于: 2020-06-07 05:20:37             🧑  作者: Mango
numpy.apply_over_axes(func, array, axes) :在数组中的多个轴上重复应用函数。
参数:
1d_func:执行一维数组所需的函数。它只能应用于
输入数组的一维切片,以及沿特定轴的一维切片。
axis:我们要对输入数组进行切片的必需轴
array:要处理的输入数组
* args:1D_function的附加参数
** kwargs:1D_function的附加参数
返回:
输出数组。输出数组的形状可以根据func是否 相对于其输入更改其输出形状而有所不同。
代码1:
# Python程序在NumPy中说明了apply_over_axis()
import numpy as geek
# 使用3D阵列
geek_array = geek.arange(16).reshape(2, 2, 4)
print("geek array :\n", mango_array)
# 在3D阵列的轴上应用预定义的求和函数
print("\nfunc sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, 1, 0]))
# 在3D阵列的轴上应用预定义的min函数
print("\nfunc min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, 1, 0]))
输出:
mango_array:
[[[0 1 2 3]
[4 5 6 7]]
[[8 9 10 11]
[12 13 14 15]]]
func sum:
[[[[24 28 32 36]]]
func min:
[ [[0 1 2 3]]
代码2:
# Python程序在NumPy中说明了apply_over_axis()
import numpy as geek
# 使用二维数组
mango_array = geek.arange(16).reshape(4, 4)
print("mango array :\n", mango_array)
"""
->[[ 0 1 2 3] min : 0 max : 3 sum = 0 + 1 + 2 + 3
-> [ 4 5 6 7] min : 4 max : 7 sum = 4 + 5 + 6 + 7
-> [ 8 9 10 11] min : 8 max : 11 sum = 8 + 9 + 10 + 11
-> [12 13 14 15]] min : 12 max : 15 sum = 12 + 13 + 14 + 15
"""
# 在2D阵列的轴上应用预定义的min函数
print("\n应用func max : \n ", geek.apply_over_axes(geek.max, geek_array, [1, -1]))
# 在2D阵列的轴上应用预定义的min函数
print("\n应用func min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, -1]))
# 在2D阵列的轴上应用预定义的求和函数
print("\n应用函数和 : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, -1]))
输出:
mango array:
[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]
[12 13 14 15]]
应用func max:
[[3]
[7]
[11]
[15]]
应用func min :
[[0]
[4]
[8]
[12]]
应用函数和:
[[6]
[22]
[38]
[54]]
代码3:等效于代码2,而不使用numpy.apply_over_axis
# Python程序说明等效于apply_over_axis()
import numpy as geek
# 使用3D阵列
geek_array = geek.arange(16).reshape(2, 2, 4)
print("mango array :\n", geek_array)
# 返回轴上所有元素的总和
print("func : \n", geek.sum(geek_array, axis=(1, 0, 2), keepdims = True))
输出:
mango array:
[[[0 1 2 3]
[4 5 6 7]]
[[8 9 10 11]
[12 13 14 15]]]
func:
[[[120]]]