小编res*_*yte的帖子

将 numpy 数组的行写入文件内部而不是循环之后的最佳方法?

我是这里的新手,总体来说是Python的新手,所以请原谅任何格式问题和其他问题。我是一名物理学家,我有一个参数模型,我想在其中迭代模型的一个或多个参数值(可能在 MCMC 设置中)。但为了简单起见,假设我只有一个具有N 个可能值的参数。在循环中,我计算模型和与其相关的几个标量指标。

我想将数据[参数值,metric1,metric2,...]逐行保存到文件中。我不在乎什么类型:.pickle、.npz、.txt、.csv 或其他任何类型都可以。

我不想计算完所有N个模型后保存数组。这里的问题是,有时参数值是如此非物理性,以至于我调用来计算模型的程序(这是一个经过多年开发的巨大复杂的东西,所以我没有触及它)使内核崩溃。如果我有N = 30000 个模型要做,而这种情况发生在29000处,我会非常不高兴并且浪费了很多时间。我可能还必须注意内存使用情况 - 我已经弄清楚如何使用文本文件执行我建议的操作,但它在大约2600行时崩溃,因为我认为它不喜欢打开那么长的文本文件。

所以,一些伪代码:

filename = 'outFile.extension'
dataArray = np.zeros([N,3])
idx = 0
for p in Parameter1:
    modelOutputVector = calculateModel(p)
    metric1, metric2 = getMetrics(modelOutputVector)
    dataArray[idx,0] = p
    dataArray[idx,1] = metric1
    dataArray[idx,2] = metric2
    ### Line that saves data here
    idx+=1
Run Code Online (Sandbox Code Playgroud)

我偏爱 npz 或 pickle 格式,但不知道如何用这两种格式来做到这一点。如果有更好的格式或更好的解决方案,我很感激任何建议。

编辑:我试图在循环内创建一个文本文件是这样的:

fileObject = open(filename, 'ab')
np.savetxt(fileObject, rowOfData, delimiter = ',', newline = ' ') …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy pickle writefile

5
推荐指数
1
解决办法
1708
查看次数

标签 统计

arrays ×1

numpy ×1

pickle ×1

python ×1

writefile ×1