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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年2月28日 下午10:32
下一篇 2023年2月28日 下午10:33

相关推荐