问题标签 [pytables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
487 浏览

python - HDF5 内部数据组织和 NumPy 使用

正如 hdf5 文档所说,HDF5 使用 NumPy 存储数据

“它建立在 HDF5 库、Python 语言和 NumPy 包之上。它具有面向对象的接口,结合了对代码的性能关键部分的 C 扩展,使其快速且极其简单——交互式存储和检索大量数据的实用工具"

...

“PyTables 使用这些 NumPy 容器作为内存缓冲区,将 I/O 带宽推向平台限制。”

那么机制是什么?PyTables 是如何使用 NumPy 的?最后,它们生成可从其他语言访问的普通 hdf5 ......

0 投票
1 回答
1150 浏览

pytables - 有没有办法按特定顺序存储 PyTable 列?

当使用字典或类来调用 createTable() 时,PyTable 列似乎是按字母顺序排列的。我需要建立一个特定的顺序,然后使用 numpy.genfromtxt() 从文本中读取和存储我的数据。我的文本文件没有像 PyTable 那样按字母顺序包含变量名。

例如,假设文本文件名为 mydata.txt 并组织如下:

时间(第 1 行) bVar(第 1 行) dVar(第 1 行) aVar(第 1 行) cVar(第 1 行)

时间(row2) bVar(row2) dVar(row2) aVar(row2) cVar(row2) ...

时间(行 N) bVar(行 N) dVar(行 N) aVar(行 N) cVar(行 N)

因此,希望创建一个按这些列排序的表,然后使用 numpy.genfromtxt 命令填充该表。

这是需要的,因为它是简单的代码并且非常快。但是,PyTable 列始终按字母顺序排列,附加数据按所需顺序排列。我在这里缺少一些基本的东西吗?有没有办法让表列的顺序遵循类定义顺序而不是按字母顺序排列?

0 投票
1 回答
1690 浏览

python - 将 2 个 hdf5 文件与 pytables 合并

ptrepack几乎是我想要的,除了它只有覆盖或忽略重复路径的选项。下面的例子说明了我想用结构发生什么

输入文件一

输入文件二

期望的输出

这样做的有效方法是什么?

0 投票
2 回答
3777 浏览

python - 通过 PyTables 或 PyHDF 将大文本文件“读入”到 hdf5?

我正在尝试使用 SciPy 进行一些统计,但我的输入数据集非常大(~1.9GB)并且采用 dbf 格式。该文件足够大,以至于当我尝试使用 genfromtxt 创建数组时,Numpy 会返回错误消息。(我有 3GB 内存,但运行的是 win32)。

IE:

从其他帖子中,我看到 PyTables 提供的分块数组可能很有用,但我的问题是首先读取这些数据。或者换句话说,PyTables 或 PyHDF 可以轻松创建所需的 HDF5 输出,但我应该如何首先将数据放入数组中?

例如:

然后我可以创建一个表或数组,但是我如何引用原始 dbf 数据呢?在说明中?

感谢您的任何想法!

0 投票
5 回答
6847 浏览

python - 无法为 Python 2.7 重新安装 PyTables

除了 2.7 之外,我还安装了 Python 2.7。再次为 2.7 安装 PyTables 时,出现此错误 -

  • 发现安装了 numpy 1.5.1 包。.. 错误:: 找不到本地 HDF5 安装。您可能需要通过设置HDF5_DIR环境变量或使用--hdf5命令行选项明确说明可以在何处找到本地 HDF5 头文件和库。

我不清楚 HDF 的安装。我再次下载 - 并将其复制到 /usr/local/hdf5 目录中。并尝试按照 PyTable 安装中的建议设置环境变量。有没有其他人有这个问题可以提供帮助?

0 投票
1 回答
2343 浏览

python - PyTables 批量获取和更新

我将每日库存数据作为使用 PyTables 创建的 HDF5 文件。我想获取一组行,将其作为数组处理,然后使用 PyTables 将其写回磁盘(更新行)。我想不出一个干净的方法来做到这一点。您能否让我知道实现这一目标的最佳方法是什么?

我的数据:

我想将与每个符号对应的行作为数组读取,进行一些处理并更新字段 var1 和 var2。我事先知道所有的符号,所以我可以遍历它们。我试过这样的事情:

我想将 rows_array 传递给另一个函数,该函数将计算 var1 和 var2 的值并为每条记录更新它。请注意,var1、var2 就像移动平均线,所以我无法在迭代器内计算它们,因此需要将整个行集作为一个数组。

在我使用 rows_array 计算出我需要的任何内容后,我不确定如何将其写回数据,即使用新的计算值更新行。更新整个表时,我使用这个:

但是,当我只想更新表的一部分时,我不是最好的方法。我想我可以重新运行“where”条件,然后根据我的计算更新每一行,但这似乎是在浪费时间重新扫描表格。

感谢您的建议...

谢谢,-e

0 投票
3 回答
2343 浏览

python - 在 Python 中存储和重新加载大型多维数据集

我将运行大量模拟,产生大量需要存储和稍后再次访问的数据。我的模拟程序的输出数据被写入文本文件(每个模拟一个)。我计划编写一个 Python 程序来读取这些文本文件,然后将数据以一种更便于以后分析的格式存储。经过相当多的搜索,我认为我正在遭受信息过载的困扰,所以我将这个问题提交给 Stack Overflow 寻求一些建议。以下是详细信息:

我的数据基本上将采用多维数组的形式,其中每个条目看起来像这样:

每个参数大致具有以下数量的潜在值:

字符串Arg1:50

字符串Arg2:20

字符串Arg3:6

字符串Arg4:24

intArg1:10,000

但是请注意,数据集将是稀疏的。例如,对于 stringArg1 的给定值,将仅填充大约 16 个 stringArg2 值。此外,对于 (stringArg1, stringArg2) 的给定组合,将填充大约 5000 个 intArg1 值。第三和第四个字符串参数是总是完全充满。

所以,有了这些数字,我的数组将有大约 50*16*6*24*5000 = 576,000,000 个结果列表。

我正在寻找存储此数组的最佳方式,以便我可以保存它并稍后重新打开它以添加更多数据、更新现有数据或查询现有数据以进行分析。到目前为止,我已经研究了三种不同的方法:

  1. 关系数据库

  2. PyTables

  3. 使用元组作为字典键的 Python 字典(使用 pickle 保存和重新加载)

我在所有三种方法中都遇到了一个问题,我总是将 (stringArg1, stringArg2, stringArg3, stringArg4, intArg1) 的每个元组组合存储为表中的字段或 Python 字典中的键。从我(可能很天真)的角度来看,这似乎没有必要。如果这些都是整数参数,那么它们只会形成数组中每个数据条目的地址,并且不需要将所有潜在的地址组合存储在单独的字段中。例如,如果我有一个 2x2 数组 = [[100, 200] , [300, 400]],您将通过请求地址数组 [0][1] 处的值来检索值。您不需要将所有可能的地址元组 (0,0) (0,1) (1,0) (1,1) 存储在其他地方。所以我希望找到解决这个问题的方法。

我希望能够在 PyTables 中定义一个表格,其中第一个表格中的单元格包含其他表格。例如,顶级表将有两列。第一列中的条目将是 stringArg1 的可能值。第二列中的每个条目都是一个表格。然后这些子表将有两列,第一列是 stringArg2 的所有可能值,第二列是另一列子子表......

这种解决方案可以直接浏览和查询(特别是如果我可以使用 ViTables 浏览数据)。问题是 PyTables 似乎不支持让一个表格的单元格包含其他表格。所以我似乎在那里遇到了死胡同。

我一直在阅读数据仓库和星型模式方法,但您的事实表似乎仍然需要包含每个可能的参数组合的元组。

好的,这就是我所在的位置。任何和所有的建议将不胜感激。在这一点上,我一直在四处寻找,以至于我的大脑受伤了。我想是时候问问专家了。

0 投票
3 回答
20072 浏览

python - 如何使用正则表达式删除 python 字符串中的十六进制值?

我在matlab中有一个单元格数组

我使用这些脚本,它们利用 matlab 的 hdf5write 函数将数组保存为 hdf5 格式。

然后我使用 pytables 将 hdf5 文件读入 python。元胞数组以 numpy 字符串数组的形式出现。我转换为列表,这是输出:

这些十六进制值从某个地方弹出到字符串中,我想删除它们。它们并不总是出现在列表的前三个项目中,我需要一种很好的方法来处理它们或找出它们为什么会出现在首位。

我尝试使用正则表达式来删除十六进制值,但运气不佳。

关于如何处理这个问题的任何建议?

0 投票
3 回答
5440 浏览

python - 在 PyTables 中,如何创建可变长度的嵌套数组?

我正在使用带有 Python 2.6 的 PyTables 2.2.1,我想创建一个包含可变长度嵌套数组的表。

我已经搜索了 PyTables 文档,教程示例(PyTables Tutorial 3.8)展示了如何创建一个长度为 1 的嵌套数组。但是对于这个示例,我如何将可变数量的行添加到 data 'info2/info3/x '和'info2/info3/y'?

为了更容易理解表结构,这是我自己开发的示例:

我在 PyTables 文档中没有发现任何迹象表明这种结构是不可能的......但如果这种结构实际上是不可能的,我有什么替代可变长度嵌套列的方法?

  • 阵列?VL阵列?如果是这样,如何将这些数据类型集成到上述结构中?
  • 其他想法?

非常感谢任何帮助!

带有附加信息的编辑:PyTables 专家似乎已经解决了“这样的结构是否可能”的问题:

PyTables 邮件论坛 - 分层数据集

那么有没有人想出一种方法来创建一个类似的 PyTable 数据结构?

再次感谢!

0 投票
1 回答
1064 浏览

python - 在 Mac 上运行构建的 PyTables 的问题

我在 Mac 上构建了 numpy 1.5.1、numexpr 1.4.2 和 PyTables 2.2.1,但出现以下错误。我用谷歌搜索了它,但只发现有人提到此特定错误的 1 个地方,但没有找到解决方案。

有谁知道这意味着什么?

谢谢,戴夫