Open In App

numpy.apply_along_axis() in Python

Last Updated : 28 Mar, 2022
Suggest changes
Share
Like Article
Like
Report

The numpy.apply_along_axis() function helps us to apply a required function to 1D slices of the given array. 
1d_func(ar, *args) : works on 1-D arrays, where ar is 1D slice of arr along axis.

Syntax : 

numpy.apply_along_axis(1d_func, axis, array, *args, **kwargs) 

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 

What *args and **kwargs actually are? 

Both of these allow you to pass a variable no. of arguments to the function. 
*args : allow to send a non-keyword variable length argument list to the function. 

Python
# Python Program illustrating  # use of *args args = [3, 8] a = list(range(*args)) print("use of args : \n ", a) 

Output : 

use of args : [3, 4, 5, 6, 7]


**kwargs: allows you to pass keyword variable length of argument to a function. It is used when we want to handle named argument in a function. 

Python
# Python Program illustrating  # use of **kwargs def test_args_kwargs(in1, in2, in3): print ("in1:", in1) print ("in2:", in2) print ("in3:", in3) kwargs = {"in3": 1, "in2": "No.","in1":"geeks"} test_args_kwargs(**kwargs) 

Output : 

in1: geeks in2: No. in3: 1


Code 1: Python code explaining the use of numpy.apply_along_axis().  

Python
# Python Program illustrating # apply_along_axis() in NumPy import numpy as geek # 1D_func is "geek_fun" def geek_fun(a): # Returning the sum of elements at start index and at last index # inout array return (a[0] + a[-1]) arr = geek.array([[1,2,3], [4,5,6], [7,8,9]])   '''  -> [1,2,3] <- 1 + 7  [4,5,6] 2 + 8  -> [7,8,9] <- 3 + 9 ''' print("axis=0 : ", geek.apply_along_axis(geek_fun, 0, arr)) print("\n") ''' | |  [1,2,3] 1 + 3  [4,5,6] 4 + 6  [7,8,9] 7 + 9  ^ ^  ''' print("axis=1 : ", geek.apply_along_axis(geek_fun, 1, arr)) 

Output : 

axis=0 : [ 8 10 12] axis=1 : [ 4 10 16]


Code 2: Sorting using apply_along_axis() in NumPy Python 

Python
# Python Program illustrating # apply_along_axis() in NumPy import numpy as geek geek_array = geek.array([[8,1,7], [4,3,9], [5,2,6]]) # using pre-defined sorted function as 1D_func print("Sorted as per axis 1 : \n", geek.apply_along_axis(sorted, 1, geek_array)) print("\n") print("Sorted as per axis 0 : \n", geek.apply_along_axis(sorted, 0, geek_array)) 

Output : 

Sorted as per axis 1 : [[1 7 8] [3 4 9] [2 5 6]] Sorted as per axis 0 : [[4 1 6] [5 2 7] [8 3 9]]


Note : 
These codes won't run on online IDE's. So please, run them on your systems to explore the working.

 
 


Similar Reads

Article Tags :
Practice Tags :