对于shape是(4,3,3,2)的4维矩阵,其意思是在(4,3)的矩阵中,其每个元素是(3,2)的矩阵,也就是(4,3)的矩阵嵌套一个(3,2)的矩阵
import numpy as np
a = np.random.randn(4,3,3,2)
print(a)
输出结果为
[[[[-2.26728458 -0.93044922]
[-0.79551665 -0.94800901]
[ 0.78514497 2.06200093]]
[[-1.60940096 -0.24614001]
[ 0.29647288 -0.29924968]
[ 0.16358296 0.74884066]]
[[ 1.09777908 1.49181953]
[ 0.46415243 0.24711349]
[-1.2020132 1.24691265]]]
[[[-0.31466526 -0.72276109]
[-0.81892115 1.06496607]
[ 1.401888 0.59864402]]
**[[-2.08980204 0.55446417]
[ 1.41521024 -2.51285901]
[ 0.39136998 1.00890537]]**
[[-0.39626076 1.38580398]
[-1.29230797 -1.69083911]
[ 1.54104362 0.8584694 ]]]
[[[-0.28891173 -2.07050353]
[-0.36509318 -1.03264759]
[ 0.96609009 -0.84523115]]
[[-1.67746496 0.0796231 ]
[-0.24992364 -0.49804146]
[-0.79940273 0.88040293]]
[[-1.41201124 0.23929839]
[-0.78763281 -0.76797591]
[-1.15122065 0.40700796]]]
[[[-1.19984005 -1.81134743]
[-0.72768683 -0.08521888]
[ 0.5493634 1.275239 ]]
[[-1.59056989 -0.97041589]
[-0.74594324 -0.61091165]
[-1.09071522 1.08896788]]
[[ 0.68662254 -1.70185507]
[-0.39004449 -0.47509404]
[-0.11858611 -0.49051322]]]]
那么
b = a[1,1]
print(b)
输出结果为
[[-2.08980204 0.55446417]
[ 1.41521024 -2.51285901]
[ 0.39136998 1.00890537]]
b刚好是在(4,3)矩阵的(1,1)位置上(矩阵维数从0开始计)
使用切片来读取,例如[0,2:4]用来读取第一行中的第二和第三个数。逗号前的数字表示第0轴下标取值范围,逗号之后表示第1维下标取值范围,2:4就表示2-4之间
在切片中,逗号分隔的是维度,冒号按照 start:end:step来分隔,start:end左闭右开,当索引为负数时,代表从右向左从-1开始数的对应位置
参考博客:
numpy函数:[16]多维数组切片存取