最佳答案
我正在寻找一种快速的方法来保存大型数组。我想以二进制格式将它们保存到磁盘上,然后相对较快地将它们读回内存中。不幸的是,泡菜不够快。
我找到了 笨蛋 Savez和 笨蛋,装货。但奇怪的是 numpy.load 将一个 npy 文件加载到“ memory-map”中。这意味着对数组的常规操作非常慢。例如,像这样的东西会非常慢:
#!/usr/bin/python
import numpy as np;
import time;
from tempfile import TemporaryFile
n = 10000000;
a = np.arange(n)
b = np.arange(n) * 10
c = np.arange(n) * -0.5
file = TemporaryFile()
np.savez(file,a = a, b = b, c = c);
file.seek(0)
t = time.time()
z = np.load(file)
print "loading time = ", time.time() - t
t = time.time()
aa = z['a']
bb = z['b']
cc = z['c']
print "assigning time = ", time.time() - t;
更准确地说,第一行的速度非常快,但是将数组分配给 obj
的其余行的速度慢得可笑:
loading time = 0.000220775604248
assining time = 2.72940087318
有没有更好的保存数字数组的方法?理想情况下,我希望能够在一个文件中存储多个数组。