如何管理一些巨大的阵列pythonicly。

时间:2017-05-16 03:28:32

标签: python arrays database numpy

我是科学计算的python用户。现在,我有一些numpy数组,每个数组的大小都很大。因此,我不能同时在内存中缩短所有这些内容。我想将数组保存在磁盘中,每次一个一个地读取它们进行一些计算。如何以pythonic方式执行此过程?

我知道如果所有数据都存储在内存中,我可以创建一个名为array_list的列表,如下所示:

array_list = []
for i0 in range(n_array):
    t_ayyay = do_some_calculate()
    array_list.append(t_ayyay)

当我想使用它们时:

for i0 in range(n_array):
    t_ayyay = array_list[i0]
    # do something.

如何在磁盘中保存array_list,我可以使用索引读取每个对象而不加载内存中的所有对象?

感谢。

1 个答案:

答案 0 :(得分:2)

Pickle是你的序列化朋友。

import pickle

some_list = [....]
pickle_out = open("some_list.pickle", "w")
pickle.dump(some_list, pickle_out)
pickle_out.close()

打开已保存的数组

pickle_in = open("some_list.pickle", "r")
some_list = pickle.open(pickle_in)