Din*_*gle 8 python syntax slice
扩展索引语法在python的doc中提到.
slice([start], stop[, step])
Run Code Online (Sandbox Code Playgroud)
使用扩展索引语法时也会生成切片对象.例如:a[start:stop:step]或a[start:stop, i].有关itertools.islice()返回迭代器的备用版本,请参阅参考资料.
a[start:stop:step]按照描述工作.但是第二个呢?怎么用?
unu*_*tbu 12
a[start:stop,i]调用方法a.__getitem__((slice(start,stop,None), i)).
如果TypeError是列表,则会引发TypeError ,但如果a是numpy数组,则它是有效且有用的表示法.实际上,我相信Numpy的开发人员要求Python的开发人员精确地扩展有效的Python切片表示法,以便更容易实现numpy数组切片表示法.
例如,
import numpy as np
arr=np.arange(12).reshape(4,3)
print(arr)
# [[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]]
Run Code Online (Sandbox Code Playgroud)
a选择第1行和第2行,然后1:3 选择第三列:
print(arr[1:3,2])
# [5 8]
Run Code Online (Sandbox Code Playgroud)
PS.要试验发送到哪个切片2,您可以使用此玩具代码:
class Foo(list):
def __getitem__(self,key):
return repr(key)
foo=Foo(range(10))
print(foo[1:5,1,2])
# (slice(1, 5, None), 1, 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |