記錄一下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]])
不難發現,如果再在後面進行切片,理解和上面的一樣