📜  Python中的numpy.apply_over_axes

📅  最后修改于: 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]]]