记录一下numpy数组的切片操作和理解
import numpy as np
先看二维数组
a = np.array(range(9)).reshape(3, 3)
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
a[:, 0]
array([0, 3, 6])
a[:, 1]
array([1, 4, 7])
a[:, 2]
array([2, 5, 8])
再看三维数组
b = np.array(range(1, 25)).reshape(2, 3, 4)
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]]])
b[:, 0]
array([[ 1, 2, 3, 4],
[13, 14, 15, 16]])
b[:, 1]
array([[ 5, 6, 7, 8],
[17, 18, 19, 20]])
b[:, 2]
array([[ 9, 10, 11, 12],
[21, 22, 23, 24]])
接着看四维数组
c = b.reshape(2, 3, 2, 2)
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]]]])
c[:, 0]
array([[[ 1, 2],
[ 3, 4]],
[[13, 14],
[15, 16]]])
c[:, 1]
array([[[ 5, 6],
[ 7, 8]],
[[17, 18],
[19, 20]]])
c[:, 2]
array([[[ 9, 10],
[11, 12]],
[[21, 22],
[23, 24]]])
很简单,就是把第一维里所有子数组,按照指定下标提取出来,放进一个空数组中
c[:,-1,:]
array([[[ 9, 10],
[11, 12]],
[[21, 22],
[23, 24]]])
c[:,-1,-1]
array([[11, 12],
[23, 24]])
不难发现,如果再在后面进行切片,理解和上面的一样