文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.5 复合类型
某些数据需要将一堆相关的值捆绑在一起成为一个单一元素。经典的例子是C语言的结构体:多个数据被组织在一起,又可以被单独访问。另一个例子是具有多个列名的SQL数据库的表或CSV文件。每个数据元素(行)包含了多个相关的数据(列值)。
NumPy通过结构化数组支持这一功能,有点类似(但不完全等同于)recarray类。这些数组的dtype包含一系列的成员,每个成员都有一个名字和它自己的sub-dtype。假设我们需要保存来自某个天气观测装置的100个数据元素,每个元素包含温度、气压和风速:
NumPy支持你以成员的名字(如“temp”)作为索引访问结构化数组的成员,在本例会返回一个形状为(100,)的浮点数组:
当你访问单个元素时,你会得到一个对象,它支持字典风格的访问,并且以成员名为关键字:
HDF5比上面介绍的更灵活。让我们用同样的dtype在文件中创建一个数据集:
对数据集切片时不限制你使用成员名的数量。我们可以同时访问“temp”和“pressure”成员:
我们甚至可以混用成员名和索引,比如为了获取最后10个温度数据:
整个过程十分高效。HDF5仅从磁盘上读取你指定的成员。同样,你也可以选择只“更新”你希望的成员。如果我们需要设置所有的温度,我们可以将新值写入out并写回文件:
HDF5只更新了每条记录的“temp”成员。所以如果你只需要修改数据集中温度或气压的部分,那么你就只占用了三分之一的内存。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论