如何将二进制文件数据读入数组?
How to read binary file data into arrays?
尝试读取 python 中的二进制文件。来自 dataset page:
The pixels are stored as unsigned chars (1 byte) and take values from
0 to 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 字节的不可变数组(在 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)]
尝试读取 python 中的二进制文件。来自 dataset page:
The pixels are stored as unsigned chars (1 byte) and take values from 0 to 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 字节的不可变数组(在 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)]