使用NumPy读取MNIST数据的实现代码示例


Posted in Python onNovember 20, 2019

NumPy

什么是NumPy

NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。主页为https://numpy.org/。

安装NumPy

使用pip工具来安装。

python -m pip install numpy

使用NumPy读取mnist数据

如果直接从网络上读取mnist数据,恭喜你,目前国内基本需要一个小时以上。所以建议预先下载mnist数据包。

工作环境

当前我的工作环境如下:Win10 + Anaconda。使用Spyder4做为IDE。Anaconda的安装可以参考我的blog。

将数据放置到指定目录

下图是我当前的工作目录环境,因此在C:\Users\sus20\.spyder-py3-dev目录下,建立子目录minist。如下图所示:

使用NumPy读取MNIST数据的实现代码示例

将下载好的四个gz文件拷贝到这个目录下,并将这四个gz文件解压。如下图所示:

使用NumPy读取MNIST数据的实现代码示例

使用NumPy读取MNIST

load_mnist 函数返回两个数组,第一个是一个 n * m 维的 NumPy array(images),这里的 n 是样本行数,m 是特征列数。训练数据集包含 60,000 个样本,测试数据集包含 10,000 样本。

在 MNIST 数据集中的每张图片由 28 * 28 个像素点构成,每个像素点用一个灰度值表示。在这里,我们将 28 * 28 的像素展开为一个一维的行向量,这些行向量就是图片数组里的行(每行 784 个值, 或者说每行就是代表了一张图片)。

load_mnist 函数返回的第二个数组(labels) 包含了相应的目标变量,也就是手写数字的类标签(整数 0-9)。

import os
import struct
import numpy as np
 
def load_mnist(path, kind='train'):
  """Load MNIST data from `path`"""
  labels_path = os.path.join(path,'%s-labels-idx1-ubyte'% kind)
  
  images_path = os.path.join(path,'%s-images-idx3-ubyte'% kind)
  
  with open(labels_path, 'rb') as lbpath:
    magic, n = struct.unpack('>II',lbpath.read(8))
    labels = np.fromfile(lbpath,dtype=np.uint8)
  #读入magic是一个文件协议的描述,也是调用fromfile 方法将字节读入NumPy的array之前在文件缓冲中的item数(n). 
 
  with open(images_path, 'rb') as imgpath:
    magic, num, rows, cols = struct.unpack('>IIII',imgpath.read(16))
    images = np.fromfile(imgpath,dtype=np.uint8).reshape(len(labels), 784)
  return images, labels
 
print(load_mnist("minst_data"))

运行代码,将得到如下图结果,说明我们已经正确的从本地读取MNIST数据集。

使用NumPy读取MNIST数据的实现代码示例

下一步,我们要开始使用TensorFlow读取MNIST数据集。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
Python中装饰器学习总结
Feb 10 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
python super的使用方法及实例详解
Sep 25 Python
Python request操作步骤及代码实例
Apr 13 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
Python制作春联的示例代码
Jan 22 Python
Python脚本操作Excel实现批量替换功能
Nov 20 #Python
详解Python中的format格式化函数的使用方法
Nov 20 #Python
Python数据分析pandas模块用法实例详解
Nov 20 #Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 #Python
Python求解正态分布置信区间教程
Nov 20 #Python
Python pandas RFM模型应用实例详解
Nov 20 #Python
使用Python实现正态分布、正态分布采样
Nov 20 #Python
You might like
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP生成树的方法
2015/07/28 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
js word表格动态添加代码
2010/06/07 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
js 操作符汇总
2014/11/08 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
jquery选择器简述
2015/08/31 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
vscode 远程调试python的方法
2017/12/01 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
python实现最长公共子序列
2018/05/22 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
倡导文明标语
2014/06/16 职场文书
小学课改工作总结
2015/08/13 职场文书
考研经验交流会策划书
2015/11/02 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
Python实现8种常用抽样方法
2021/06/27 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android