python中 .shape[0]和.reshape(X.shape[0], -1)及X.reshape(X.shape[0], -1).T 的用法

 shape[0]就是第一个列的行数

例子1:假设x的shape是(209, 64, 64, 3)的

>>> X.shape
(209, 64, 64, 3)

>>> X.shape[0]
209

 通过reshape重新建立维度,第一个维度就是X.shape[0],这就是正常的reshape操作;第二个维度是-1,我们知道X的shape属性是多少,是(209, 64, 64, 3),但是想让X变成209行,列数不知道是多少,所以也就是209 * 64 * 64 * 3 / 209,也就是64 * 64 * 3。
 

>>> X.reshape(X.shape[0], -1)
(209, 64*64*3) 

X.reshape(X.shape[0], -1).T可以将一个维度为(a,b,c,d)的矩阵转换为一个维度为(b∗c∗d, a)的矩阵。

>>> X.reshape(X.shape[0], -1).T
(64*64*3, 209)

reshape(1,-1)转化成1行:

reshape(2,-1)转换成两行:

reshape(-1,1)转换成1列:

reshape(-1,2)转化成两列

reshape(2,8)转化成两行八列

test = [[1,2,3],[2,3,4]]
test_x = np.reshape(test_x, (2, 1, 3)) # 转二维为三维


总结:

参数-1就是不知道行数或者列数多少的情况下使用的参数,所以先确定除了参数-1之外的其他参数,然后通过(总参数的计算) / (确定除了参数-1之外的其他参数) = 该位置应该是多少的参数。

例:假设我们不知道z的shape属性是多少,但是想让z变成只有一列,行数不知道多少,通过z.reshape(-1,1),Numpy自动计算出有8行。

import numpy as np

z = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8]])
c = z.reshape(-1, 1)
print("c:",c)

> c: [[1]
       [2]
       [3]
      [4]
      [5]
      [6]
      [7]
      [8]]

想让z变成2列,但是不知道多少行,Numpy自动计算出有4行,数组shape属性为(2, 4)与原来的(1, 8)配套。

import numpy as np

z = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8]])
d = z.reshape(-1, 2)
print("d:",d)

> d: [[1 2]
      [3 4]
      [5 6]
      [7 8]]

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值