gpt4 book ai didi

python - 有没有人有一个很好的例子来说明如何使用 struct python 模块将 numpy 数组保存到文件中?

转载 作者:行者123 更新时间:2023-11-28 19:25:49 24 4
gpt4 key购买 nike

我一直在试验在使用 pypy 时将 numpy 数组保存到文件的最佳方法(这意味着我不能使用明显的 numpy.savenumpy.savetxt 等,因为它们不受支持)。我试过使用 Pickle 模块(与 pypy 一起使用),但 Pickle 只会让我保存数据列表。虽然我可以使用 array.tolist(),但是当离开 1D numpy 数组时,这会变得复杂。

我知道 Struct 模块可以用来保存和加载 numpy 数组,但我不知道如何解决这个问题,而且网上的信息似乎很少。

任何有用的提示/教程都会非常有用!

最佳答案

使用 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.fromfilenumpy.tofile对于整个数组的实际转储非常方便。

关于python - 有没有人有一个很好的例子来说明如何使用 struct python 模块将 numpy 数组保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com