Thursday, December 26, 2024
Google search engine
HomeLanguagesnumpy.apply_over_axes() in Python

numpy.apply_over_axes() in Python

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]]]

References : 
https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.apply_over_axes.html 

Note : 
These codes won’t run on online IDE’s. Please run them on your systems to explore the working.

This article is contributed by Mohit Gupta_OMG 😀. If you like Lazyroar and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the Lazyroar main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments