使用 struct,您可以轻松地将整个数据数组转储或读取到磁盘,但您必须弄清楚如何存储元数据,即写入的项目数、每个项目的大小、数组的形状......
比如说,你的数组总是由 uint32 组成。给定这样一个数组arr
,您可以将其写为:
f = open(filename, 'wb')
f.write(struct.pack('I', arr.ndim))
f.write(struct.pack('I' * arr.ndim, *arr.shape))
size = reduce(lambda x, y: x*y, arr.shape)
f.write(struct.pack('I' * size, *arr.ravel()))
你可以把它读成
f = open(filename, 'rb')
ndim = struct.unpack('I', f.read(4))[0]
shape = tuple(struct.unpack('I' * ndim, f.read(4 * ndim)))
size = reduce(lambda x, y: x*y, shape)
arr = np.array(struct.unpack('I' * size, f.read(4 * size)).reshape(shape)
你可以想出一个更复杂的方案来编码数据类型,数据的字节序......
此外,如果它们在您的系统中工作,则使用numpy.fromfile和numpy.tofile来实际转储整个数组非常方便。