ste*_*ten 8 python arrays arguments numpy
有没有办法将数组范围作为参数传递给函数?就像是 :
> blah(ary,arg1=1:5)
def blah(ary,arg1): print ary[arg1]
Run Code Online (Sandbox Code Playgroud)
Python 1:5
仅在方括号内接受语法.解释器将其转换为slice
对象.然后__getitem__
,对象的方法应用切片.
看一下numpy/lib/index_tricks.py
利用这个的一些功能.实际上它们不是函数,而是定义自己__getitem__
方法的类.该文件可能会给你一些想法.
但如果你不满意,那么可能包括:
blah(arr, slice(1, 5))
blah(arr, np.r_[1:5])
Run Code Online (Sandbox Code Playgroud)
nd_grid
,mgrid
,ogrid
延长"切片"的概念,以接受一个假想的"步骤"的值:
mgrid[-1:1:5j]
# array([-1. , -0.5, 0. , 0.5, 1. ])
Run Code Online (Sandbox Code Playgroud)
请注意,在将切片传递给blah
函数之前在切片上展开的任何内容都不会知道另一个参数的形状.所以np.r_[:-1]
回报吧[]
.
并且None
可以用于slice
:例如slice(None,None,-1)
相当于[::-1]
.
您可以使用切片功能
>>> def blah(ary,arg1):
... print ary[arg1]
>>> blah(range(10), slice(1, 5))
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)