文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.9 数组类型
虽然在NumPy代码中不太常见,但当你需要保存多个同类型的值于一个单一元素中时,数组类型其实是一个很好的选择。和复合类型不同,数组类型没有一个个独立的“成员”,而是每个元素自身就是一个多维数组。
这个类型有一些陷阱,它们来自NumPy的一些“有帮助”但是却令人不解的行为。让我们以一个2×2的浮点数组为例:
现在我们以该dtype创建一个具有100个数据点的HDF5数据集:
读取一个元素会得到一个2×2的NumPy数组:
你可能会期望这里得到的是一个NumPy标量,其类型为之前的dtype,可惜不是如此。NumPy会自动将那个数组类型的标量“提升”为一个正式的数组。虽然很方便,但这是另一个dset[…].dtype !=dset.dtype的情况。
同样,如果我们试图用我们的dtype创建一个本地NumPy数组,它会被“吃掉”,并被转化为主数组的额外维度:
那么数组类型的好处是什么?通常它适合作为某个复合类型的成员。比如,假设我们有一个实验输出一个整型时间戳和一个2×2光感应器的结果,数据类型可以选择如下:
以该复合类型创建数据集,就可以轻松存取实验的单个输出:
如果你的数据包含这样“打包”过的值,那么一般来说使用数组类型都要好于给数据集添加额外的维度。因为这样做不仅让访问更方便,而且在语义上也更有意义。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论