Python中reshape函数参数-1的含义

本文详细解析了数据预处理中的关键步骤,包括归一化处理、数据重塑以及标签转换等,特别关注如何使用numpy的reshape函数高效地调整数据结构,以适应不同类型的机器学习模型输入需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注释讲解版

例如:

# data pre-processing
# normalize
# X shape (60,000 28x28),表示输入数据 X 是个三维的数据
# 可以理解为 60000行数据,每一行是一张28 x 28 的灰度图片
# X_train.reshape(X_train.shape[0], -1)表示:只保留第一维,其余的纬度,不管多少纬度,重新排列为一维
# 参数-1就是不知道行数或者列数多少的情况下使用的参数
# 所以先确定除了参数-1之外的其他参数,然后通过(总参数的计算) / (确定除了参数-1之外的其他参数) = 该位置应该是多少的参数
# 这里用-1是偷懒的做法,等同于 28*28
# reshape后的数据是:共60000行,每一行是784个数据点(feature)
X_train = X_train.reshape(X_train.shape[0], -1) / 255
X_test = X_test.reshape(X_test.shape[0], -1) / 255
y_train = np_utils.to_categorical(y_train, num_classes = 10)
y_test = np_utils.to_categorical(y_test, num_classes = 10)

再例如:

# data pre-processing
# -1代表例子的个数 ,1是channel
# 数组新的shape属性应该要与原来的配套,
# 如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值
# 这里是将一组图像矩阵x重建为新的矩阵,该新矩阵的维数为(a, 1, 28, 28),其中-1表示a由实际情况来定
# 例如,一组图像的矩阵(假设是50张,大小为56×56),
# 则执行reshape(-1, 1, 28, 28)
# 可以计算a = 50×56×56/1/28/28 = 200
# 即维数为(200, 1, 28, 28)
X_train = X_train.reshape(-1, 1, 28, 28) / 255
X_test = X_test.reshape(-1, 1, 28, 28) / 255
y_train = np_utils.to_categorical(y_train, num_classes = 10)
y_test = np_utils.to_categorical(y_test, num_classes = 10)

例子
reshape函数是对narray的数据结构进行维度变换,由于变换遵循对象元素个数不变,在进行变换时,假设一个数据对象narray的总元素个数为N,如果我们给出一个维度为(m,-1)时,我们就理解为将对象变换为一个二维矩阵,矩阵的第一维度大小为m,第二维度大小为N/m。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值