python 读写数据
开源标准数据集 —— mnist(手写字符识别)
下载地址:mnist.pkl.gz
1. 使用 python 读取和解析 mnist.pkl.gz
import pickle
import gzip
from PIL import Image def load_data():
with gzip.open('./mnist.pkl.gz') as fp:
training_data, valid_data, test_data = pickle.load(fp)
return training_data, valid_data, test_data training_data, valid_data, test_data = load_data()
print len(training_data[0])
print len(valid_data[0])
print len(test_data[0])
print len(training_data[0][0]) I = training_data[0][0]
I.resize((28, 28))
im = Image.fromarray((I*256).astype('uint8'))
im.show()
im.save('5.png')
可以看出,mnist.pkl.gz 分为训练集,校验集和测试集;
使用 PIL 中的图像相关 api,我们可对其中的图像显示出来并保存;
2. Python中的单行、多行、中文注释
在大量的数据处理或者计算机视觉的文献和著作中,我们常见如下的数据集可视化(甚至对参数也可进行可视化,毕竟图像的本质是二维数组),通过文章末尾的代 码我们发现只需对布局及间距的慎重设置,便可对大量丰富的图像以”地板贴砖(tiles on a floor)”的形式进行组织,也即可视化,展示数据或相关工作,可以起到十分直观的效果,下图即是对深度神经网络的权值矩阵进行的贴砖可视化:
def normalize(darr, eps=1e-8):
# normalize(x) = (x-min)/(max-min)
darr -= darr.min()
darr *= 1./(darr.max()+eps)
return darr def tile_raster_images(X, image_shape, tile_shape,
tile_spacing=(0, 0), normalize_rows=True, output_pixel_vals=True):
# image_shape:每一个砖的高和宽,
# tile_shape:在横纵两个方向上分别有多少砖
# tile_spacing:砖与砖之间的距离
# normalize_rows:是否对砖进行归一化
# output_pixel_vals:是否对砖以图像的形式进行显示 assert len(image_shape) == 2
assert len(tile_shape) == 2
assert len(tile_spacing) == 2
# 对参数进行断言,确保它们都是二维元组
output_shape = [
(ishp + tsp)*tshp-tsp
for ishp, tshp, tsp in zip(image_shape, tile_shape, tile_spacing)
]
# image_shape == (28, 28) mnist data
# tile_shape == (10, 10), tile_spacing == (1, 1)
# [(28+1)*10-1]*[(28+1)*10-1] H, W = image_shape
Hs, Ws = tile_spacing
dt = 'uint8' if output_pixel_vals else X.dtype
# python 风格的三目运算符
output_array = numpy.zeros(output_shape, dtype=dt) # 开始贴砖
for i in range(tile_shape[0]):
for j in range(tile_shape[1]):
if i*tile_shape[1]+j < X.shape[0]:
# X的每一行是一个图像(二维)flatten后的(一维的行向量)
this_x = X[i*tile_shape[1]+j]
this_image = normalize(this_x.reshape(image_shape)) if normalize_rows else this_x.reshape(image_shape)
c = 255 if output_pixel_vals else 1
output_array[
i*(H+Hs):i*(H+Hs)+H, j*(W+Ws):j*(W+Ws)+W
] = this_image*c
return output_array import numpy
from PIL import Image X = numpy.random.randn(500, 28*28)
arr = tile_raster_images(X, image_shape=(28, 28),
tile_shape=(12, 12), tile_spacing=(1, 1))
img = Image.fromarray(arr)
img.show()
img.save('./砖块可视化.png')
# 这里也可使用 matplotlib 进行显示
# plt.imshow(img, cmap='gray')
# plt.show()
可视化可以更直观的观察数据,让工作更加高效。
3. 数据可视化,贴砖
一、python单行注释符号(#)
示例:#this is a comment
二、批量、多行注释符号
多行注释是用三引号”’ ”’包含的,引号可以使单引号也可以是双引号
例如:
'''
ABC
ABC
ABC
'''
"""
ABC
ABC
ABC
"""
三、python中文注释方法
如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明。把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明:
一定要在第一行或者第二行加上这么一句话:
#coding=utf-8或# -*- coding: utf-8 -*-
我刚开始加上了依然出错,是因为我的py文件的前三行是注释声明,我把这句话放在了第四行,所以依然报错。
py脚本的前两行一般都是:
#!/usr/bin/python
# -*- coding: utf-8 -*-
python 读写数据的更多相关文章
- python读写数据篇
一.读写数据1.读数据 #使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件.file_object = open('thefi ...
- python操作txt文件中数据教程[1]-使用python读写txt文件
python操作txt文件中数据教程[1]-使用python读写txt文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果 程序实现 filename = '. ...
- Python StringIO实现内存缓冲区中读写数据
StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以像操作磁盘文件那样来操作StringIO.这篇文章主要介绍了Python StringIO模块,此模块 ...
- Python 学习 第17篇:从SQL Server数据库读写数据
在Python语言中,从SQL Server数据库读写数据,通常情况下,都是使用sqlalchemy 包和 pymssql 包的组合,这是因为大多数数据处理程序都需要用到DataFrame对象,它内置 ...
- Python中异常和JSON读写数据
异常可以防止出现一些不友好的信息返回给用户,有助于提升程序的可用性,在java中通过try ... catch ... finally来处理异常,在Python中通过try ... except .. ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- python 读写、创建 文件
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- [转]用Python读写Excel文件
[转]用Python读写Excel文件 转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...
- [Python]读写文件方法
http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...
随机推荐
- 计蒜客 28315.Excellent Engineers-线段树(单点更新、区间最值) (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 E)
先写这几道题,比赛的时候有事就只签了个到. 题目传送门 E. Excellent Engineers 传送门 这个题的意思就是如果一个人的r1,r2,r3中的某一个比已存在的人中的小,就把这个人添加到 ...
- 洛谷 P1064 金明的预算方案【有依赖的分组背包】
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...
- 线段树【p2629】 好消息,坏消息
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->p2629 好消息,坏消息 历程 刚开始看到这个题,发现是需要维护区间和,满心欢喜敲了一通线段树,简单debug之后交上去 \ ...
- 数学【p1412】 经营与开发(秦九韶算法)
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->P1412 经营与开发 分析 虽然看到\(Rank_1\)已经有了解释. 但我认为我能BB的更好 我还是决定来写一篇题解. q ...
- [LOJ6277]数列分块入门 1
题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问$A_r$的值.思路: 分块. 对于整块的数据打标 ...
- kong后台接口
在nginx-kong.lua中,require('lapis').serve('kong.api'),先require文件/usr/local/share/lua/5.1/lapis/init.lu ...
- 最近公共祖先 Least Common Ancestors(LCA)算法 --- 与RMQ问题的转换
[简介] LCA(T,u,v):在有根树T中,询问一个距离根最远的结点x,使得x同时为结点u.v的祖先. RMQ(A,i,j):对于线性序列A中,询问区间[i,j]上的最值.见我的博客---RMQ - ...
- 基于CoreText的排版引擎
前言 本人今年主要在负责猿题库iOS客户端的开发,本文旨在通过分享猿题库iOS客户端开发过程中的技术细节,达到总结和交流的目的. 这是本技术分享系列文章的第三篇.本文涉及的技术细节是:基于CoreTe ...
- Camera setParameters(), getParameters(),unlock()三个方法之间的限制关系
Camera mCamera = Camera.open(); // 第一次调用getParameters()需要在unlock()方法之前否则出现错误 Camera.Parameters param ...
- [置顶]
kubernetes资源类型--Volume
在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失.如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中.在K8S中,当Pod重建的时候 ...