使用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中IPYTHON入门实例
May 11 Python
详解Python迭代和迭代器
Mar 28 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python实现excel转sqlite的方法
Jul 17 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
Python3.9.1中使用match方法详解
Feb 08 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
php在线代理转向代码
2012/05/05 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python实现反转部分单向链表
2018/09/27 Python
Python实现12306火车票抢票系统
2019/07/04 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
室内设计自我鉴定
2013/10/15 职场文书
银行出纳岗位职责
2013/11/25 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
个人总结与自我评价
2014/09/18 职场文书
街道务虚会发言材料
2014/10/20 职场文书
邀请函样本
2015/02/02 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技