a[start:stop,i]
调用方法a.__getitem__((slice(start,stop,None), i))
.
这就提出了一个TypeError
if a
是一个列表,但它是有效且有用的表示法,如果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]]
1:3
选择第 1 行和第 2 行,并且2
选择第三列:
print(arr[1:3,2])
# [5 8]
附言。试验发送到哪个切片__getitem__
, 你可以
玩一下这个玩具代码:
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)