• 【NumPy】数组的维度变换在DL|ML数据集处理时的妙用


    记录

            近日老师布置的作业中提供了一个csv文件,里面有59列,其中前面58个是数据的属性,也就是决定该某个该数据数据类别的58个变量,最后列是该数据的分类结果。比如:同样的数字手写体“1”和“8”,他们的属性就是形状、粗细等,类别就是对应的1, 8。

            但是当我读取完数据并且划分好了数据集,打印出训练集的shape是这样的:(28,2760)——(数据维度+数据数量)很明显这是错误的,那么该如何解决呢?


    【NumPy】数组的维度变换在DL|ML数据集处理时的妙用

    记录

    正文 

    np,swapaxes——交换维度!


    正文 

            众所皆知:对于投喂给模型(fit操作)的X(数据),Y(标签)中的X,不论是深度学习还是机器学习格式都是这样的:第一个维度都是数量,后面的维度是数据的维度,也就是数据数量+数据维度的格式。

            比如:Mnist数据中的X.shape=(70000, 28, 28)正是说有7W个(28,28)的数据,所以毫无疑问我的数据集X必须是(2760,28)——(数据数量+数据维度)而不是(28, 2760)——(数据维度+数据数量)。

           最后有一点差点忘记讲的是:数据集一般都是np.array的格式。


    np,swapaxes——交换维度!

            这个时候就终于轮到我们的正主:np,swapaxes登场啦!

    方法说明
    numpy.swapaxes(array,ax1,ax2)将数组array的维度ax1和维度ax2的数据进行调换

            刚刚我们提到,现在的数据是(数据维度+数据数量),而我的数据维度毫无疑问只是简单的1,所以说解决的办法显而易见:交换数据集维度1和维度0!

            那我们该如何去做呢?第一反可能会是用for循环之类的暴力交换,实际上,我们不需要这么麻烦,我也是想到了numpy的作者考虑到了维度交换的问题,会有这样一个函数,一查果然有!所以我们只需要在处理完数据集后对x_trian和x_test做以下操作: 

    1. x_train = np.swapaxes(x_train, 0, 1)
    2. x_test = np.swapaxes(x_test, 0, 1)

    便可以达到我们的目的。

    当然还有一种特别的情况: 就是我们的数据集是一维的,这个样子就更简单了,我们只需要:

    x_train = x_train.reshape(-1,1)

    除此之外,还有一些函数也会起到作用,在此处一一列出来,供大家参考使用!

  • 相关阅读:
    【PI仿真笔记2-电容模型1】
    技术分享 | 需要小心配置的 gtid_mode
    先有网络模型的使用及修改
    【QT】设置焦点及光标位置
    二叉堆(一) - 原理与C实现
    报道 | 国内外运筹优化会议精选
    使用docker获取docker hub中的项目并复现
    使用 PyTorch 搭建网络 - train_py篇
    首批48所高校大模型开课“尝鲜”,AI教学赋能计划合作名单公布
    商业智能BI与业务管理决策思维之四:业务成本分析
  • 原文地址:https://blog.csdn.net/qq_51831335/article/details/127595006