使用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 04 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
python实现mean-shift聚类算法
Jun 10 Python
keras输出预测值和真实值方式
Jun 27 Python
Python pip install之SSL异常处理操作
Sep 03 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 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 版本]
2007/03/20 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP7匿名类用法分析
2016/09/26 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
回顾Javascript React基础
2019/06/15 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
python提取内容关键词的方法
2015/03/16 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
pyqt5中动画的使用详解
2020/04/01 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
超详细Python解释器新手安装教程
2021/05/10 Python