繁体   English   中英

从SQLite和HDF5格式导出/导入到numpy,scipy

[英]exporting from/importing to numpy, scipy in SQLite and HDF5 formats

Python与SQLite(sqlite3,atpy)和HDF5(h5py,pyTables)的接口似乎有很多选择 - 我想知道是否有人有使用numpy数组或数据表(结构化/记录数组)的经验,以及其中最为无缝地与每种数据格式的“科学”模块(numpy,scipy)集成(SQLite和HDF5)。

大部分取决于您的使用案例。

与传统的关系数据库相比,我在处理各种基于HDF5的方法方面有很多经验,所以我不能过多评论SQLite库的python ...

至少就h5pypyTables ,它们都通过numpy数组提供非常无缝的访问,但它们面向非常不同的用例。

如果您想要快速访问任意基于索引的切片的n维数据,那么使用h5py要简单h5py 如果你有更像表格的数据,并且你想查询它,那么pyTables是一个更好的选择。

h5py围绕HDF5库相对“香草”的包装相比, pyTables 如果您要定期从另一种语言访问您的HDF文件( pyTables添加一些额外的元数据),这是一件非常好的事情。 h5py可以做很多事情 ,但对于某些用例(例如pyTables所做的事情),你需要花更多的时间来调整一些事情。

pyTables有一些非常好的功能。 但是,如果您的数据看起来不像表,那么它可能不是最佳选择。

为了给出一个更具体的例子,我用相当大(数十GB)的3维和4维数据阵列工作了很多。 它们是浮点数,整数,uint8等的同质数组。我通常想要访问整个数据集的一小部分。 h5py使这非常简单,并且可以自动猜测合理的块大小。 从磁盘中抓取任意块或切片要比简单的memmapped文件快得多。 (强调任意......显然,如果你想抓住一个完整的“X”切片,那么一个C排序的memmapped数组是不可能击败的,因为“X”切片中的所有数据都在磁盘上相邻。)

作为一个反例,我的妻子收集来自各种传感器的数据,这些传感器在几年到几秒的时间间隔内进行采样。 她需要在她的数据上存储和运行任意查询(以及相对简单的计算)。 pyTables使这个用例非常容易和快速,并且仍然比传统的关系数据库有一些优势。 (特别是在磁盘使用率和可以将大型(基于索引的)数据块读入内存的速度方面)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM