Open In App

numpy.apply_along_axis() in Python

Improve
Improve
Like Article
Like
Save
Share
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
# 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 : 

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





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.

 

 



Last Updated : 28 Mar, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads