我正在用多个参数做一些冗长的计算。我想保存和检索这些计算的结果。我知道如何用pickle保存numpy数组,但我不确定如何有效地编码用于计算这些数组的参数
作为一个例子,我有一个计算大型矩阵特征值的函数。根据用于构造矩阵的参数,我得到不同的特征值。现在我想保存用dim, parameterA, parameterB, parameterC
的特定组合得到的特征值。我可以尝试对文件名中的参数进行编码,但这会很快导致文件名很长,因为我的实际代码中有更多的参数。有什么办法吗
import numpy
def calculate_eigenvalues(dim, parameterA, parameterB, parameterC):
numpy.random.seed(parameterA)
matrix = numpy.random.uniform(parameterB, parameterC, (dim,dim))
eigenvalues = numpy.linalg.eigvals(matrix)
return eigenvalues
def magic_save(dim, parameterA, parameterB, parameterC):
eigenvalues = calculate_eigenvalues(dim, parameterA, parameterB, parameterC)
SAVE(eigenvalues)
def magic_load(dim, parameterA, parameterB, parameterC):
LOAD(eigenvalues)
return eigenvalues
# calculate and save eigenvalues
magic_save(dim=4, parameterA=2, parameterB=-3.2, parameterC=4.1) # calculates and saves eigenvalues
# calculate and save some other eigenvalues for different parameters
magic_save(dim=8, parameterA=23, parameterB=-3.1, parameterC=0.1) # calculates and saves eigenvalues
# retrieve eigenvalues for a certain combination of parameters
loaded_eigenvalues = magic_load(dim=4, parameterA=2, parameterB=-3.2, parameterC=4.1) # loads saved eigenvalues
calculated_eigenvalues = calculate_eigenvalues(dim=4, parameterA=2, parameterB=-3.2, parameterC=4.1)
# compare that the result is really the same:
print(f"loaded and calculated eigenvalues are identical:"
f"{numpy.allclose(loaded_eigenvalues, calculated_eigenvalues)}")
IIUC,您可以从所有参数值(可能包括参数名)计算哈希值,并将其用作文件名。像这样,您可以非常确定为每个参数值组合获得唯一的文件名,同时保持文件名长度简洁一致
相关问题 更多 >
编程相关推荐