适用于Python中的list(也就是数组),也适用于numpy科学结构(array等)。
使用方法[start: end : step ],也就是[ 起始下标 : 终止下标 : 间隔距离 ]
切片范围是: start <= x < end,注意:一个小于等于,一个小于
示例:
示例1
import numpy as np
x=np.array([1,2,3,4,6,7,8,9])
x1=[1,2,3,4,6,7,8,9]
print(type(x)) ##
print(type(x1))##
print (x[::]) ## [1 2 3 4 6 7 8 9]
print (x1[::]) ## [1, 2, 3, 4, 6, 7, 8, 9]
print(x[::-1]) ## [9 8 7 6 4 3 2 1]
print(x1[::-1]) ## [9, 8, 7, 6, 4, 3, 2, 1]
print(x[::2]) ##[1 3 6 8]
print(x1[::2]) ##[1, 3, 6, 8]
print(x[::-2]) ##[9 7 4 2]
print(x1[::-2]) ##[9, 7, 4, 2]
print(x[0]) ## 1
print(x1[0]) ## 1
print(x[1:]) ##[2 3 4 6 7 8 9]
print(x1[1:]) ##[2, 3, 4, 6, 7, 8, 9]
print(x[:3]) ##[1 2 3]
print(x1[:3]) ##[1, 2, 3]
print(x[1:8:2]) ##[2 4 7 9]
print(x1[1:8:2]) ##[2, 4, 7, 9]
结论:
1.list和numpy.ndarray是两种数据类型,区别可以看[]里面是否有逗号,有则是list,否则是numpy.ndarray
2.::代表所有,取所有元素,::-1,表示倒序取所有;
3.x[::2]和x[::-2],2表示step ,间隔距离,区别一个是正取,一个是倒取;
4.x[1:]表示取下标为1以及之后的全部,x[:3]表示取下标为3之前的但不包括3的所有;
示例2
a = [[1,2,3,4],[2,3,4,5],[5,6,7,8]]
print(type(a)) ##
print(a) ##[[1, 2, 3, 4], [2, 3, 4, 5], [5, 6, 7, 8]]
print(a[1]) ##[2, 3, 4, 5]
print(a[:2]) ##[[1, 2, 3, 4], [2, 3, 4, 5]]
print(a[1][:3]) ##[2, 3, 4]
这也是切片操作,不同的是:保留第一个维度所有元素,第二维度元素保留到j;
只适用numpy的科学数据结构
b = np.array([[1,2,3,4],[2,3,4,5],[5,6,7,8]])
print(type(b)) ##
print(b)
[[1 2 3 4]
[2 3 4 5]
[5 6 7 8]]
print(b[:,2]) ##[3 4 7] 取第三列
print(b[1,:]) ## [2 3 4 5] 取第二行
print(b[0][3]) ##4 取对应下标位置处的值
c= b[[0,1,2],[0,1,0]]##取00坐标,11坐标,20坐标位置的值
print(c) ##[1 3 5]
d= b[1:3,1:3]##行取下标为1:3的行,列取1:3的列
print(d)
[[3 4]
[6 7]]
e = b[1:3,[0,2]]##行取下标为1:3的行,列取下标为0和2的列
print(e)
[[2 4]
[5 7]]
f = b[...,1:]##不限制行,列取下标为1之后所有的列,包含1
print(f)
[[2 3 4]
[3 4 5]
[6 7 8]]
g = b[1:,...]##不限制列,行取下标为1之后所有的行,包含1
print(g)
[[2 3 4 5]
[5 6 7 8]]