📅  最后修改于: 2020-06-05 04:45:59             🧑  作者: Mango
numpy.apply_along_axis(1d_func, axis, array, *args, **kwargs) : 帮助我们将必需的函数应用于给定数组的一维切片。
1d_func(ar,* args):适用于一维数组,其中ar是沿轴arr的一维切片。
参数:
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("args的使用 : \n ", a)
输出:
args的使用:
[ 3,4,5,6,7 ]
** kwargs:允许您将参数的关键字可变长度参数传递给函数。当我们要处理函数中的命名参数时使用它。
# Python程序说明kwargs的用法
def test_args_kwargs(in1, in2, in3):
print ("in1:", in1)
print ("in2:", in2)
print ("in3:", in3)
kwargs = {"in3": 1, "in2": "No.","in1":"mango"}
test_args_kwargs(**kwargs)
输出:
in1: mango
in2: No.
in3: 1
代码1:解释numpy.apply_along_axis()用法的Python代码
# Python程序在NumPy中说明了apply_along_axis()
import numpy as geek
# 1D_func is "geek_fun"
def geek_fun(a):
# 返回inout数组中起始索引和最后索引处元素的总和
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 Python中使用apply_along_axis()进行排序
# Python程序在NumPy中说明了apply_along_axis()
import numpy as geek
geek_array = geek.array([[8,1,7],
[4,3,9],
[5,2,6]])
# 使用预定义的排序函数作为1D_func
print("按轴1排序: \n", geek.apply_along_axis(sorted, 1, geek_array))
print("\n")
print("按轴0排序: \n", geek.apply_along_axis(sorted, 0, geek_array))
输出:
按轴1排序:
[[1 7 8]
[3 4 9]
[2 5 6]]
按轴0排序:
[[4 1 6]
[5 2 7]
[8 3 9]]