Open In App

numpy.apply_along_axis() in Python

Last Updated : 28 Mar, 2022
Comments
Improve
Suggest changes
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.

 
 


Article Tags :
Practice Tags :

Similar Reads

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy