将结果保存为LUT

时间:2015-04-30 15:50:07

标签: python numpy

import numpy as np, itertools

x1 = np.linspace(0.1, 3.5, 3)
x2 = np.arange(5, 24, 3)
x3 = np.arange(50.9, 91.5, 3)

def calculate(x1,x2,x3):
    res = x1**5+x2*x1+x3
    return res


products = list(itertools.product(x1,x2,x3))

results = [calculate(a,b,c) for a,b,c in products]

我必须将结果保存为查找表以备将来使用。 在我的实际情况中,该文件将非常大约1GB。所以我以后需要更快的方式来阅读该文件。 将来保存以供访问的最佳方法和文件格式是什么?

outputs = np.column_stack((products,results))
np.savetxt('test.out',outputs, delimiter = ',')

我将来的用法如下:

#given_x1,given_x2,given_x3 = 0.2, 8, 60
#open the look up table
#read the neighbouring two values for the given values
#linearly interpolate between two values for the results.

1 个答案:

答案 0 :(得分:1)

我从列表理解中构建一个一维数组并将其保存:

In [37]:

a = np.array([calculate(a,b,c) for a,b,c in products])
np.savetxt(r'c:\data\lut.txt', a)
In [39]:

b = np.loadtxt(r'c:\data\lut.txt')
np.all(a==b)
Out[39]:
True