使用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编程中对文件和存储器的读写示例
Jan 25 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python 重命名轴索引的方法
Nov 10 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
对象析构函数__del__在Python中何时使用
Mar 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
smarty实现多级分类的方法
2014/12/05 PHP
php车辆违章查询数据示例
2016/10/14 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
js表数据排序 sort table data
2009/02/18 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python中的set实现不重复的排序原理
2018/01/24 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python面向对象类的继承实例详解
2018/06/27 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
python3 使用traceback定位异常实例
2020/03/09 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
弄虚作假心得体会
2014/09/10 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
中学生逃课检讨书
2015/02/17 职场文书
一年级语文教学随笔
2015/08/14 职场文书