尝试在python中读取二进制文件。从数据集页面:
像素存储为无符号字符(1字节),值从0到255
我尝试了以下方法,它可以打印(0,)
,而不是784,000位的数组。
# -*- coding: utf8 -*-
# Processed MNIST dataset (http://cis.jhu.edu/~sachin/digit/digit.html)
import struct
f = open('data/data0', mode='rb')
data = []
print struct.unpack('<i', f.read(4))
如何将这个二进制文件读入一个784,000位的数组(28个字节x 28个字节x 1k个样本)或28x28x1000 3D数组中。我以前从未使用过二进制文件,并且很困惑!
f.read()
将为您提供一个784,000字节的不变数组(str
在Python 2中称为a )。如果需要使其可变,则可以使用能够存储各种原语的array
模块及其数组类型,其中包括无符号字节(由B
代码表示):
from array import array
data = array('B')
with open('data/data0', 'rb') as f:
data.fromfile(f, 784000)
可以根据需要对其进行切片:
EXAMPLE_SIZE = 24 * 24
examples = [data[s:s + EXAMPLE_SIZE] for s in xrange(0, len(a), EXAMPLE_SIZE)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句