The numpy.apply_over_axes()applies a function repeatedly over multiple axes in an array.
Syntax :
numpy.apply_over_axes(func, array, axes)
Parameters :
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
Return :
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.
Code 1 :
Python
# Python Program illustrating # 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 ]))
|
Output :
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]]]
Code 2 :
Python
# Python Program illustrating # 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 ]))
|
Output :
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]]
Code 3 : Equivalent to Code 2 without using numpy.apply_over_axis()
Python
# Python Program illustrating # 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 ))
|
Output :
geek array : [[[ 0 1 2 3] [ 4 5 6 7]] [[ 8 9 10 11] [12 13 14 15]]] func : [[[120]]]
Note :
These codes won’t run on online IDE’s. Please run them on your systems to explore the working.
Article Tags :