当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy.apply_over_axes()用法及代码示例


numpy.apply_over_axes(func,array,axes):在数组的多个轴上重复应用函数。

参数:

1d_func  : the required function to perform over 1D array. It can only be applied in 
         1D slices of input array and that too along a particular axis. 
axis     : required axis along which we want input array to be sliced
array    : Input array to work on 
*args    : Additional arguments to 1D_function 
**kwargs : Additional arguments to 1D_function  

返回:


The output array. Shape of the output array can be different depending on whether func 
changes the shape of its output with respect to its input.

代码1:

# Python Program illustarting 
# apply_over_axis() in NumPy 
  
import numpy as geek  
  
# Using a 3D array 
geek_array = geek.arange(16).reshape(2, 2, 4) 
print("geek array  :\n", geek_array) 
  
# Applying pre-defined sum function over the axis of 3D array 
print("\nfunc sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, 1, 0])) 
  
# Applying pre-defined min function over the axis of 3D array 
print("\nfunc min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, 1, 0]))

输出:

geek 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 Program illustarting 
# apply_over_axis() in NumPy 
  
import numpy as geek  
  
# Using a 2D array 
geek_array = geek.arange(16).reshape(4, 4) 
print("geek array  :\n", geek_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 
  
"""
  
# Applying pre-defined min function over the axis of 2D array 
print("\nApplying func max : \n ", geek.apply_over_axes(geek.max, geek_array, [1, -1])) 
  
# Applying pre-defined min function over the axis of 2D array 
print("\nApplying func min : \n ", geek.apply_over_axes(geek.min, geek_array, [1, -1])) 
  
# Applying pre-defined sum function over the axis of 2D array 
print("\nApplying func sum : \n ", geek.apply_over_axes(geek.sum, geek_array, [1, -1]))

输出:

geek array  :
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]

Applying func max : 
  [[ 3]
 [ 7]
 [11]
 [15]]

Applying func min : 
  [[ 0]
 [ 4]
 [ 8]
 [12]]

Applying func sum : 
  [[ 6]
 [22]
 [38]
 [54]]

代码3:等效于代码2,但不使用numpy.apply_over_axis()

# Python Program illustarting 
# equivalent to apply_over_axis() 
  
import numpy as geek  
  
# Using a 3D array 
geek_array = geek.arange(16).reshape(2, 2, 4) 
print("geek array  :\n", geek_array) 
  
# returning sum of all elements as per the axis 
print("func : \n", geek.sum(geek_array, axis=(1, 0, 2), keepdims = True))

输出:

geek array  :
 [[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]
func : 
 [[[120]]]


相关用法


注:本文由纯净天空筛选整理自 numpy.apply_over_axes() in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。