Numpy中reshape函数的使用方法

在学习深度学习入门课程时,使用jupyter notebook写作业的时候遇到以下一段代码:

X_train = np.reshape(X_train, (X_train.shape[0], -1))
X_test = np.reshape(X_test, (X_test.shape[0], -1))

由于本菜鸡之前并没有深入学习Numpy的使用方法,并且上课笔记中的原代码和作业代码有所不同,导致自己这一段代码看的云里雾里,不知所云。
课上代码如下:

Xtr_rows = Xtr.reshape(Xtr.shape[0], 32 * 32 * 3) # Xtr_rows becomes 50000 x 3072
Xte_rows = Xte.reshape(Xte.shape[0], 32 * 32 * 3) # Xte_rows becomes 10000 x 3072

下面以一个简单的例子入手,讨论一下Numpy中reshape函数的不同使用方法,并讲解课程作业中的疑惑。
首先让我们创建一个一维数组:

arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # 创建一个一维数组

-接下来我想把这个一维数组转换为三位数组:

  • 方法一:
arr1 = arr1.reshape(3, 3)   #本方法直接给出要转换的矩阵形态,参数分别为行数和列数。
  • 方法二:
arr1 = arr1.reshape(-1, 3)    #本方法只给定了列数,由编译器直接计算行数,并进行转换操作。这种方法可以简单快捷的实现矩阵转换,人生苦短,我用Python

下面具体讨论一下课程中的问题:
cifar10这个图集中的数据表示方法为:500032323
表示5000张32
32像素的RGB三通道彩色照片
在KNN分类器中我们需要使用行向量进行后续计算操作
** Xtr.shape[0 **返回原数据集中的行数
因此:

  • 第一段代码:
X_train = np.reshape(X_train, (X_train.shape[0], -1)) #表示把X_Train数据集转换为5000行的矩阵,列数由编译器进行计算并转换为对应的矩阵
  • 第二段代码
Xtr_rows = Xtr.reshape(Xtr.shape[0], 32 * 32 * 3) # Xtr_rows becomes 50000 x 3072
此处指定了要转换的列数为32*32*3

你可能感兴趣的:(Numpy中reshape函数的使用方法)