返回介绍

7.5 复合类型

发布于 2024-01-25 22:02:55 字数 1540 浏览 0 评论 0 收藏 0

某些数据需要将一堆相关的值捆绑在一起成为一个单一元素。经典的例子是C语言的结构体:多个数据被组织在一起,又可以被单独访问。另一个例子是具有多个列名的SQL数据库的表或CSV文件。每个数据元素(行)包含了多个相关的数据(列值)。

NumPy通过结构化数组支持这一功能,有点类似(但不完全等同于)recarray类。这些数组的dtype包含一系列的成员,每个成员都有一个名字和它自己的sub-dtype。假设我们需要保存来自某个天气观测装置的100个数据元素,每个元素包含温度、气压和风速:

NumPy支持你以成员的名字(如“temp”)作为索引访问结构化数组的成员,在本例会返回一个形状为(100,)的浮点数组:

当你访问单个元素时,你会得到一个对象,它支持字典风格的访问,并且以成员名为关键字:

HDF5比上面介绍的更灵活。让我们用同样的dtype在文件中创建一个数据集:

对数据集切片时不限制你使用成员名的数量。我们可以同时访问“temp”和“pressure”成员:

我们甚至可以混用成员名和索引,比如为了获取最后10个温度数据:

整个过程十分高效。HDF5仅从磁盘上读取你指定的成员。同样,你也可以选择只“更新”你希望的成员。如果我们需要设置所有的温度,我们可以将新值写入out并写回文件:

HDF5只更新了每条记录的“temp”成员。所以如果你只需要修改数据集中温度或气压的部分,那么你就只占用了三分之一的内存。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文