Python numpy.apply_along_axis()

Python numpy.apply_along_axis()

Python numpy.apply_along_axis()函数帮助我们对给定数组的一维切片应用所需的函数。
1d_func(ar, *args):在一维数组上工作,其中ar是Arr沿轴的一维切片。

语法 :

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

参数 :

1d_func :在一维数组上执行的必要函数。它只能应用于输入数组的一维切片,而且是沿着一个特定的轴。
axis :所需的轴,我们希望输入数组沿着这个轴被切开。
array :要工作的输入数组
*args : 1D_function的附加参数
**kwargs : 1D_function的附加参数

*args和**kwargs究竟是什么?
它们都允许你向函数传递一个可变数量的参数。
*args:允许向函数发送一个非关键字的可变长度参数列表。

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

输出 :

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

**kwargs:允许您将关键字可变长度参数传递给函数。当我们想在函数中处理命名实参时使用它。

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

输出 :

in1: geeks
in2: No.
in3: 1

代码1:解释numpy.apply_along_axis()的使用

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

输出 :

axis=0 :  [ 8 10 12]


axis=1 :  [ 4 10 16]

代码2:在NumPy 中使用apply_along_axis()进行排序

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

输出 :

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程