有没有办法将数组范围作为参数传递给函数?就像是 :
> blah(ary,arg1=1:5)
def blah(ary,arg1): print ary[arg1]
Python1:5
仅在方括号内接受语法。解释器将其转换为slice
对象。然后__getitem__
,对象的方法将应用切片。
查看numpy/lib/index_tricks.py
一些可以利用此功能的功能。实际上,它们不是函数,而是定义了自己的__getitem__
方法的类。该文件可能会给您一些想法。
但是,如果您不满意,则可能包括:
blah(arr, slice(1, 5))
blah(arr, np.r_[1:5])
nd_grid
,mgrid
,ogrid
延长“切片”的概念,以接受一个假想的“步骤”的值:
mgrid[-1:1:5j]
# array([-1. , -0.5, 0. , 0.5, 1. ])
请注意,任何在切片上扩展的东西在传递给blah
函数之前,都不知道另一个参数的形状。因此,np.r_[:-1]
只需返回即可[]
。
并None
可以用于slice
:例如slice(None,None,-1)
等效于[::-1]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句