有没有办法将数组范围作为参数传递给函数?
就像是 :
> 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_grid
,mgrid
,ogrid
扩展了'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/