python中的reshape是什么意思_Python中reshape函数参数-1的意思?

-1就是矩阵转换后根本不清楚最终要被转换成多少行,但是知道其他的信息。这是手写数字识别中初始化的经典代码,这两天也在研究这个,下面写上我自己的一点理解。

importnumpy

X_train=numpy.array([

[[ 1.,0.,0.,8],

[ 0.,1.,0,90],

[ 0.,0.,1,77]],

[[ 1.,0.,0,65],

[ 0.,1.,0,-8],

[ 0.,0.,1,20]]

])

print(X_train)

输出肯定是(2,3,4)可以简单理解为2个3 X 4的矩阵,那么若是4维矩阵呢?

X_train=numpy.array([

[[ 1., 0., 0.,8],

[ 0., 1., 0,90],

[ 0., 0., 1,77]],

[[ 1., 0., 0,65],

[ 0., 1., 0,-8],

[ 0., 0., 1,20]]

])

X_train = X_train.reshape(-1,X_train.shape[1],X_train.shape[2],1)

print(X_train)

print(X_train.shape)

我们知道X_train.shape[1]=3,X_train.shape[2]=4,所以X_train.reshape(-1,3,4,1),就是先按照4行1列构造出4 X 1的矩阵,将这个矩阵称之为A矩阵,我们可以将A矩阵看成是a列的单列矩阵,然后再与前面的3结合,表示3行a列的矩阵,构造出B矩阵,可以将B矩阵看成是b列的单列矩阵,-1表示未知数,则合起来就是未知行b列的矩阵,由于原矩阵是2 X 3 X 4,矩阵元素的数目是确定的,新的矩阵列数已知,就可以算出矩阵的行了,然后生成最终的矩阵。变换后的矩阵如下:

[[[[ 1.]

[ 0.]

[ 0.]

[ 8.]]

[[ 0.]

[ 1.]

[ 0.]

[90.]]

[[ 0.]

[ 0.]

[ 1.]

[77.]]]

[[[ 1.]

[ 0.]

[ 0.]

[65.]]

[[ 0.]

[ 1.]

[ 0.]

[-8.]]

[[ 0.]

[ 0.]

[ 1.]

[20.]]]]

构造的原则是从右往左两个数字一组顺序看,两个数左边的表示行,右边的表示列,递归构造出矩阵。

你可能感兴趣的:(python中的reshape是什么意思_Python中reshape函数参数-1的意思?)