numpy.apply_along_axis() in Python

numpy.apply_along_axis(1d_func, axis, array, *args, **kwargs) : 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.

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.



filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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.

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


Output :

in1: geeks
in2: No.
in3: 1

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

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python Program illustarting
# 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))

chevron_right


Output :

axis=0 :  [ 8 10 12]


axis=1 :  [ 4 10 16]

Code 2 : Sorting using apply_along_axis() in NumPy Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python Program illustarting
# 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))

chevron_right


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 NumPy-Python programs won’t run on onlineID, so run them on your systems to explore them
.
This article is contributed by Mohit Gupta_OMG 😀. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks 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.



My Personal Notes arrow_drop_up


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.