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.]]]]

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值