尝试在python中读取二进制文件。来自dataset page:
像素存储为无符号字符(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数组。我以前从未使用过二进制文件,而且很困惑!
答案 0 :(得分:3)
f.read()
将为您提供一个784,000字节的不可变数组(在Python 2中称为str
)。如果你需要它是可变的,你可以使用array
module及其能够存储各种基元的数组类型,包括无符号字节(由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)]