普通切片操作:
list名[首:尾:步长]
numpy数组切片操作:
数组名[首:尾,首:尾:步长](逗号用于区分维度,注意:逗号前面不能限定步长)
example 1:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[11, 12, 13]])
b = a[:2, 1:]
print(b)
输出:
[[2 3]
[5 6]]
解释:b = a[:2, 1:]
中,2是指取a的第0、1行(因为切片前闭后开),1是指取前边的取到的“子数组”的从第1列开始到最后的列。
example 2:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[11, 12, 13]])
b = a[2:, :1]
print(b)
输出:
[[ 7]
[11]]
解释:b = a[2:, :1]
中,2是指取a的从第2行之后的所有行,1指取前边得到的“子数组”第0列。
example 3:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[11, 12, 13]])
b = a[2:, :1:-1]
print(b)
输出:
[[ 9]
[13]]
解释:b = a[2:, :1:-1]
比 example 2 多个-1,意思是取 [ [ 7 8 9] , [11 12 13] ] 最后一列。
example 4:
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[11, 12, 13]])
b = a[:, :-1]
print(b)
输出:
[[ 1 2]
[ 4 5]
[ 7 8]
[11 12]]
解释:b = a[:, :-1]
中,不指定取哪些行,即取整个数组,然后-1表示取整个数组除最后一列外的所有列(-1表示倒数第一列,-2表示倒数第二列…)。
总结:因此,逗号前的切片可以理解为取“行”,逗号后的切片理解为取“列”,且后半部分可以有步长。
参考了:
1、https://zhuanlan.zhihu.com/p/360751111