numpy库多维数组的类型和列表的类型非常类似,同样有索引和切片功能:
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
1.一维数组
# 准备一个数组
arr1=np.array(np.arange(9))
arr1
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
# 索引
arr[-1] #8
arr1[arr1.size-2] #7
arr1[arr1.size-9] #0
# 切片 :[start:end:step]
arr1[1:4] #左开右闭的区间
arr1[1:5:2] #array([1,3])
arr1[::-1] # 反向取所有,-1变成了步长
2.二维数组
# 准备一个二维数组
arr2=np.array([
np.arange(1,4),
np.arange(5,8)
])
arr2
array([[1, 2, 3],
[5, 6, 7]])
# 索引
arr2[0][2] # 3
arr2[0,2] # 3
# 切片
arr2[0,] # array([1,2,3])
arr2[0,::] # 同上
arr2[0,0:3] #array([1,2])
3.多维数组
arr4=np.arange(1,25).reshape(2,3,4)
arr4
array([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],
[[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]]])
arr4[1][2][2] # 23
arr4[1,1,1] #18
arr3[1,1,] # array([17,18,19,20])
arr4[1,1,::] # 同上
arr4[1,1,::-1] # array([20, 19, 18, 17])
arr4[0,1:3]
#array([[ 5, 6, 7, 8],
#[ 9, 10, 11, 12]])
arr4[:1,1] #array([ 6, 18])
b[1,:,2] #array([15, 19, 23])
b[1,...]
#array([[13, 14, 15, 16],
# [17, 18, 19, 20],
# [21, 22, 23, 24]])
b[0,::-1,-1] #array([12, 8, 4])
b[:,:,-1][::-1][:,-1] #array([24, 12])