gpt4 book ai didi

python - 如何从 pickle 文件中一次加载一行?

转载 作者:太空狗 更新时间:2023-10-29 21:33:46 24 4
gpt4 key购买 nike

我有一个大型数据集:20,000 x 40,000 作为 numpy 数组。我已将其保存为 pickle 文件。

我不想将这个庞大的数据集读入内存,而是一次只读其中的几行(比如 100 行),用作小批量。

我怎样才能从 pickle 文件中只读取几行随机选择的(没有替换的)行?

最佳答案

您可以将 pickle 增量写入文件,这样您就可以加载它们也是递增的。

举个例子。在这里,我们遍历列表的项目,并且依次 pickle 。

>>> import cPickle
>>> myData = [1, 2, 3]
>>> f = open('mydata.pkl', 'wb')
>>> pickler = cPickle.Pickler(f)
>>> for e in myData:
... pickler.dump(e)
<cPickle.Pickler object at 0x7f3849818f68>
<cPickle.Pickler object at 0x7f3849818f68>
<cPickle.Pickler object at 0x7f3849818f68>
>>> f.close()

现在我们可以反向执行相同的过程并根据需要加载每个对象。为了示例的目的,假设我们只想要第一项而不想要想要遍历整个文件。

>>> f = open('mydata.pkl', 'rb')
>>> unpickler = cPickle.Unpickler(f)
>>> unpickler.load()
1

此时,文件流只前进到第一个目的。其余对象未加载,这正是您的行为想。为了证明,您可以尝试阅读文件的其余部分并查看其余部分还坐在那里。

>>> f.read()
'I2\n.I3\n.'

关于python - 如何从 pickle 文件中一次加载一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37954324/

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