洋葱剥离法
例如:给定了以下array(矩阵) a,要你立即读出它的shape大小,该怎么读???
a=array([[[[ 1., 2.]],[[ 3., 4.]],[[ 5., 6.]]],[[[ 7., 8.]],[[ 9., 10.]],[[ 11., 12.]]],[[[ 13., 14.]],[[ 15., 16.]],[[ 17., 18.]]]])
教你们一个诀窍:
(1)首先,看最左边中括号‘[’的个数max=4,所以可以确定shape的形式为shape=[ □, □, □, □],其中 □表示待写入的数;
(2)再看4括号(即[[[[ ]]]])中3括号(即[[[ ]]])的个数,可以数出为3,分别为:
①[[[ 1., 2.]],[[ 3., 4.]],[[ 5., 6.]]]
②[[[ 7., 8.]],[[ 9., 10.]],[[ 11., 12.]]]
③[[[ 13., 14.]],[[ 15., 16.]],[[ 17., 18.]]]
所以,shape=[ 3, □, □, □],其中 □表示待写入的数;
(3)任选一个3括号(即[[[ ]]]),看里面2括号(即[[[ ]]])的个数,可以数出为3。
例如[[[ 1., 2.]],[[ 3., 4.]],[[ 5., 6.]]]中,分别为:
①[[ 1., 2.]]
②[[ 3., 4.]]
③[[ 5., 6.]]
所以,shape=[ 3, 3, □, □],其中 □表示待写入的数;
(4)任选一个2括号(即[[ ]]),看里面1括号(即[ ])的个数,可以数出为1。所以,shape=[ 3, 3, 1, □],其中 □表示待写入的数;
(5)任选一个1括号(即[ ]),看里面纯数字的个数,可以数出为2。所以,shape=[ 3, 3, 1, 2].
综上步骤,可以确定a的形状为shape=[ 3, 3, 1, 2].