2.4 数组的索引和切片
索引: 获取数组中特定位置元素的过程
切片:获取数组元组子集的过程
1.一维数组的索引和切片:与Python列表类似
import numpy as np
a=np.array([9,8,7,6,5])
print(a[2])
print("\n")
print(a[1:4:2])
Tip: a[1:4:2] 的元素含义
起始编号:终止编号(不含):步长 //冒号分隔
2.多维数组的索引
每个维度一个索引值,逗号分隔。
import numpy as np
a=np.arange(24).reshape((2,3,4))
print(a)
print("\n")
#注意下标从0开始
print(a[1,2,3])
print("\n")
print(a[0,1,2])
print("\n")
#负号表示从右往左数(倒着数)但是下标从1开始,即倒数的几个元素
print(a[-1,-2,-3])
3.多维数组的切片
import numpy as np
a=np.arange(24).reshape((2,3,4))
print(a)
print("\n")
print(a[0,0:2,1:3])
print("\n")
我们先看这个数组,要去切片[[1,2], [5,6]]的话。
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
①它是第一个小列表中的 so 第一个元素值是0;
②它由第一行(下标0)、第三行包围(下标2 不计入)。so 第二个元素值是0:2
③它由于第二列(下标1)、第四列(下标3 不计入)。so 第三个元素值是1:3
④三个元素由逗号分隔
→a[0,0:2,1:3]
其他例子
print(a[:,1:3,:])
注意这里的1:3;其实指的是下标为1、2的行,冒号:表示 all in 。Outcome:
[[[ 4 5 6 7]
[ 8 9 10 11]]
[[16 17 18 19]
[20 21 22 23]]]
print(a[:,:,::2])
两个冒号后面的2,表示步长为2。Outcome:
[[[ 0 2]
[ 4 6]
[ 8 10]]
[[12 14]
[16 18]
[20 22]]]