问题标签 [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 投票
2 回答
313 浏览

numpy - 对非常大的一维数组进行排序

我即将第一次尝试 Pytables,我需要在每个时间步将数据写入 hdf 文件。我将有超过 100,000 个时间步长。完成后,我想按第 2 列对我的 100,000+ x 6 数组进行排序,即,我目前已按时间排序所有内容,但现在我需要按降雨率递减的顺序对数组进行排序(第 2 列)。我不确定如何从这里开始。我知道将整个数组放在内存中是不明智的。任何想法如何快速有效地做到这一点?

感谢任何建议。

0 投票
1 回答
537 浏览

python - 如何使用 `slice` 对象来读取 pytables.CArray?

如何使用slice对象来访问tables.CArray? 我目前拥有的是

0 投票
2 回答
1718 浏览

python - 有效存储大型稀疏矩阵(浮点数)

我正在寻找一种解决方案来存储稀疏矩阵的大约 1000 万个浮点(双精度)数。该矩阵实际上是由 100 万乘 100 万个元素组成的二维三角矩阵。element是 element和 element之间(i,j)的实际得分度量。存储方法必须允许非常快速地访问此信息,可能通过内存映射包含矩阵的文件。我当然不想将所有文件加载到内存中。score(i,j)ij

我已经尝试pytables使用暴露的类,但是如果不扫描所有行Score,我就无法直接访问元素。i,j有什么建议吗?

0 投票
1 回答
1471 浏览

python - Pytables。如何迭代唯一值?

我在 Pytables 中有一个数据集,看起来像

我在同一日期有多个项目,例如:

有没有办法遍历唯一日期,然后遍历日期中的项目?我的意思是

0 投票
1 回答
772 浏览

python - 用python对分布式内存集群进行“全局数组”并行编程

我正在寻找一个 python 库,它将 numpy 的功能扩展到分布式内存集群上的操作:即“一种并行编程模型,其中程序员将数组视为单个全局数组,而不是位于不同处理器上的多个独立数组。 "

对于 Matlab,麻省理工学院的林肯实验室创建了pMatlab,它允许在集群上进行矩阵代数,而不必过多担心并行编程方面的细节。(以上引用的出处。)

对于基于磁盘的存储,python 存在 pyTables。尽管它没有优化计算在集群中的分布方式,而是优化了计算在磁盘上的大数据如何“分布”。- 这相当相似,但仍然缺少一个关键方面。

目的不是从集群中榨取最后一点性能,而是进行对于单台机器来说太大的科学计算(半交互式)。

python是否存在类似的东西?我的愿望清单是:

  • 积极维护
  • 代替numpy
  • 或者类似于numexpr的用法
  • 并行编程部分的高度抽象:即不需要用户显式使用 MPI
  • 支持分布式内存集群中的数据局部性
  • 支持集群中的多核机器

这可能有点像相信牙仙,但你永远不知道......

到目前为止我发现:

  1. 太平洋西北国家实验室(存在/曾经存在)为 Global Array 提供了一个 python 接口。请参阅“使用 NumPy 和全局数组工具包在 Python 中进行高性能并行计算”主题下的链接。(特别是“GA_SciPy2011_Tutorial.pdf”。)但是这似乎又消失了。

  2. DistNumPy :在本文中有更详细的描述。然而,这些项目似乎已被放弃。

如果您知道任何软件包或使用过以上两种中的任何一种,请描述您对它们的体验。

0 投票
1 回答
23626 浏览

python - 在 Python 中合并具有数百万行的两个表

我正在使用 Python 进行一些数据分析。我有两个表,第一个(我们称之为'A')有 1000 万行和 10 列,第二个('B')有 7300 万行和 2 列。他们有 1 列具有共同的 id,我想根据该列将两个表相交。特别是我想要表的内部连接。

我无法将表 B 作为 pandas 数据框加载到内存中,以在 pandas 上使用正常的合并功能。我尝试通过读取块上的表 B 的文件,将每个块与 A 相交并连接这些交叉点(内部连接的输出)。这在速度上是可以的,但时不时地给我带来问题并吐出分段错误......没有那么好。这个错误很难重现,但它发生在两台不同的机器上(Mac OS X v10.6 (Snow Leopard) 和 UNIX、Red Hat Linux)。

我终于尝试了 Pandas 和 PyTables 的组合,方法是将表 B 写入磁盘,然后遍历表 A 并从表 B 中选择匹配的行。最后一个选项有效,但速度很慢。默认情况下,pytables 上的表 B 已经被索引。

我该如何解决这个问题?

0 投票
1 回答
182 浏览

python - 如何更改 HDF5 表标题(使用 pytables 创建)

我想知道是否有一种方法可以更改HDF5 table我在 python 代码中创建的标题,使用pyTables. 我给了错误的标题字符串,我现在也需要更改它,所以当我在 python 中再次打开它时,我可以根据它的标题将它与我加载的其他表区分开来。

0 投票
3 回答
2225 浏览

python - PyTables 处理大小比内存大很多倍的数据

我试图了解 PyTables 如何管理大小大于内存大小的数据。以下是 PyTables 代码中的注释(链接到 GitHub):

在_getNode方法中也可以找到有用的注释。
似乎 PyTables 具有非常智能的 IO 缓冲系统,据我了解,它将用户引用的数据存储在快速 RAM 中作为“aliveNodes”,在需要时将之前和当前未引用的数据保持为“deadNodes”以快速“恢复”它,并且如果请求的键不存在于死或活类别中,则从磁盘读取数据。

在处理大于可用内存的数据时,我需要一些关于 PyTables 如何准确处理情况的专业知识。我的具体问题:

  1. deadNode/aliveNode 系统如何工作(常见图片)?
  2. 如果我是对的,aliveNodes/deadNodes 之间的主要区别是什么,它们都代表存储在 RAM 中的数据?
  3. 可以手动调整用于缓冲的 RAM 限制吗?在注释下方,有一段代码从 params['NODE_CACHE_SLOTS']. 它可以由用户以某种方式指定吗?例如,如果我想为其他需要内存的应用程序留下一些 RAM?
  4. 在处理大量数据时,PyTables 在什么情况下会崩溃或显着变慢?在我的情况下可以超过内存 100 倍,在这种情况下常见的陷阱是什么?
  5. PyTables 在大小、数据结构以及对被认为是“正确”的数据进行操作以实现最佳性能方面有何用途?
  6. Docs 建议.flush()在每个基本.append()周期后使用。这个周期实际上可以有多长?我正在执行一个小基准测试,比较 SQLite 和 PyTables 如何处理使用大 CSV 文件中的键值对创建一个巨大的表。当我.flush()在主循环中使用较少的时候,PyTables 获得了巨大的加速。那么 - 对相对较大的数据块是否正确,.append()然后使用.flush()
0 投票
3 回答
116 浏览

python - 如何确定 PyTables 数组的大小(以字节为单位)?

如何确定 PyTables 数组的大小(以字节为单位)?

0 投票
1 回答
428 浏览

python - 用于 OS X 10.8.2 的 Enthought Python 上的 Pytables

我一直在努力让pytables和底层HDF5 库在 OS X 中的 python 上运行,所以我想我会尝试一下 Enthought 发行版(这也将大大简化以后跨平台的部署)。

我为 64 位 OS X安装了EPD 7.3 (我正在运行 10.8.2),但不幸的是没有成功,我在尝试加载 pytables 时得到以下信息...

我想这意味着找不到 HDF5 所需的库 szip?如果 EPD 确实缺少它(看起来很奇怪......),我可以自己安装它而不从源代码构建 HDF5 吗?还是只是在一个陌生的地方