有没有办法将数组范围作为参数传递给函数?
就像是 :

> blah(ary,arg1=1:5)

def blah(ary,arg1): print ary[arg1]

最佳答案

Python仅在方括号内接受1:5语法。解释器将其转换为slice对象。然后,对象的__getitem__方法将应用切片。

查看numpy/lib/index_tricks.py可以利用此功能的一些功能。实际上,它们不是函数,而是定义了自己的__getitem__方法的类。该文件可能会给您一些想法。

但是,如果您不满意,则可能包括:

blah(arr, slice(1, 5))
blah(arr, np.r_[1:5])
nd_gridmgridogrid扩展了'slice'概念,以接受虚构的'step'值:
mgrid[-1:1:5j]
# array([-1. , -0.5,  0. ,  0.5,  1. ])

请注意,在将切片上扩展的任何内容传递给blah函数之前,不会知道其他参数的形状。因此,np.r_[:-1]仅返回[]
None可以在slice中使用:例如slice(None,None,-1)[::-1]等效。

关于python - 将数组范围作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28652976/

10-13 07:23