使用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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
Python 获取numpy.array索引值的实例
Dec 06 Python
关于tf.reverse_sequence()简述
Jan 20 Python
python3 logging日志封装实例
Apr 08 Python
python实现猜单词游戏
May 22 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
python如何绘制疫情图
Sep 16 Python
Python中的特殊方法以及应用详解
Sep 20 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
一个ftp类(ini.php)
2006/10/09 PHP
基于header的一些常用指令详解
2013/06/06 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Python中的文件和目录操作实现代码
2011/03/13 Python
python str与repr的区别
2013/03/23 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python----数据预处理代码实例
2019/03/20 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python绘制趋势图的示例
2020/09/17 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
医护人员英文求职信范文
2013/11/26 职场文书
小加工厂管理制度
2014/01/21 职场文书
高中体育教学反思
2014/01/29 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技