python - 如何在 Python 中存储数值查找表(带标签)

标签 python numpy

我有一个在 Python 中运行的科学模型,它生成一个查找表作为输出。也就是说,它会生成一个多维“表格”,其中每个维度都是模型中的一个参数,每个单元格中的值是模型的输出。

我的问题是如何最好地在 Python 中存储此查找表。我在每个可能的参数组合上循环运行模型(使用出色的 itertools.product 函数),但我不知道如何最好地存储输出。

将输出简单地存储为 ndarray 似乎是明智的,但我真的希望能够基于参数值访问输出,而不仅仅是索引。例如,与其以 table[16][5][17][14] 的形式访问值,我更愿意使用变量名称/值以某种方式访问​​它们,例如:

table[solar_z=45, solar_a=170, type=17, reflectance=0.37]

或类似的东西。如果我能够迭代这些值并取回它们的参数值,那就太棒了——也就是说,能够找出 table[16]... 对应于 solar_z 的输出= 45.

在 Python 中有没有一种明智的方法来做到这一点?

最佳答案

为什么不使用数据库?我找到了 MongoDB (以及官方 Python 驱动程序 Pymongo )成为科学计算的绝佳工具。以下是一些优点:

  • 易于安装 - 只需下载适用于您的平台的可执行文件(认真地说,最多 2 分钟)。
  • 无模式数据模型
  • 快如闪电
  • 提供 map/reduce 功能
  • 非常好的查询功能

因此,您可以将每个条目存储为 MongoDB 条目,例如:

{"_id":"run_unique_identifier",
 "param1":"val1",
 "param2":"val2" # etcetera
}

然后您可以随意查询条目:

import pymongo
data = pymongo.Connection("localhost", 27017)["mydb"]["mycollection"]
for entry in data.find(): # this will yield all results
 yield entry["param1"] # do something with param1

我不知道 MongoDB/pymongo 是否是您具体问题的答案。但是,如果您从事数据密集型科学计算,您可能真的会从检查它们中获益。

关于python - 如何在 Python 中存储数值查找表(带标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280488/

相关文章:

Python/Tkinter - 如何创建窗口的无限副本?

python - regex.sub() 给出与 re.sub() 不同的结果

python - Pyral+新建任务+ValueError : No JSON object could be decoded

Python安装问题

python - 使用 Numba 的 @jit 导致数学与 Python 中使用的 Numpy 的 float32 不一致

arrays - 在 Numpy 中并行化类似 matmul 的矩阵计算

python - argparse 的 add_argument 如何在关键字参数之前采用可变长度参数?

python - 在 Pytorch 中计算 4D 张量的一个特定维度的平均值

python - numpy 数组的小数部分

python - NumPy 是否搞乱了 CX_Freeze?