如何将二进制文件数据读入数组?

大卫·费里斯

尝试在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数组中。我以前从未使用过二进制文件,并且很困惑!

Ry-

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章