使用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中Class类用法实例分析
Nov 12 Python
python Crypto模块的安装与使用方法
Dec 21 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
PyQt实现界面翻转切换效果
Apr 20 Python
python3个性签名设计实现代码
Jun 19 Python
python实现批量解析邮件并下载附件
Jun 19 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
python deque模块简单使用代码实例
Mar 12 Python
Django 删除upload_to文件的步骤
Mar 30 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
python爬虫基础之urllib的使用
Dec 31 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
php中的动态调用实例分析
2015/01/07 PHP
PDO::_construct讲解
2019/01/27 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
jQuery Dom元素操作技巧
2018/02/04 jQuery
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
实例讲解Python3中abs()函数
2019/02/19 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
python 通过文件夹导入包的操作
2020/06/01 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
社会工作专业求职信
2014/07/15 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
教师旷工检讨书
2015/08/15 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python