一般切片的操作都很简单,比如对于一个list,我们要用切片取部分内容,可以有如下操作:

>>> L = [1, 2, 3, 4, 5]
>>> print(L[1:3])
[2, 3]

对于L[i:j]有,从第i个开始取,取到第j-1个为止。同样对于str和tuple都可以这样操作。


下边说个不一样的:

现在我们有二维数组,
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
[13, 14, 15, 16]

1.现在如果我们想取[2, 3],那么该怎么操作呢?

>>>import numpy as np

>>>a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
>>>print(a[:1 , 1:3])
[[2 3]]

2.现在如果我们想取[6, 7, 8]呢?

>>>print(a[1:2 , 1:4])
[[6 7 8]]

3.现在如果我们想取2, 6呢?

>>>print(a[:2 , 1:2])
[[2]
[6]]

4.现在如果我们想取8, 12, 16呢?

>>>print(a[1: , 3:])
[[ 8]
[12]
[16]]

通过以上几个例子我们可以发现,这中间多了个逗号,。逗号,前边表示对二维数组的「行」进行操作,逗号,后边表示对二维数组的「列」进行操作。对「行」「列」的操作,又都遵循上边第一个一维数组的例子。从第i个开始取,取到第j-1个为止

如果我们想取「整行」或者「整列」呢?

1.现在如果我们想取前两行呢?

>>>print(a[:2 , ])
[[1 2 3 4]
[5 6 7 8]]

2.现在如果我们想取第0-2列呢?

>>>print(a[: , 0:2])

[[ 1 2]
[ 5 6]
[ 9 10]
[13 14]]

另外,如果从第0个开始,则这个0可以省略。如果取到最后一个位置,则也可以省略。
比如,

>>>a = [1,2,3,4,5]
>>>print(a[0:5])
>>>print(a[:])
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]