返回介绍

7.9 数组类型

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

虽然在NumPy代码中不太常见,但当你需要保存多个同类型的值于一个单一元素中时,数组类型其实是一个很好的选择。和复合类型不同,数组类型没有一个个独立的“成员”,而是每个元素自身就是一个多维数组。

这个类型有一些陷阱,它们来自NumPy的一些“有帮助”但是却令人不解的行为。让我们以一个2×2的浮点数组为例:

现在我们以该dtype创建一个具有100个数据点的HDF5数据集:

读取一个元素会得到一个2×2的NumPy数组:

你可能会期望这里得到的是一个NumPy标量,其类型为之前的dtype,可惜不是如此。NumPy会自动将那个数组类型的标量“提升”为一个正式的数组。虽然很方便,但这是另一个dset[…].dtype !=dset.dtype的情况。

同样,如果我们试图用我们的dtype创建一个本地NumPy数组,它会被“吃掉”,并被转化为主数组的额外维度:

那么数组类型的好处是什么?通常它适合作为某个复合类型的成员。比如,假设我们有一个实验输出一个整型时间戳和一个2×2光感应器的结果,数据类型可以选择如下:

以该复合类型创建数据集,就可以轻松存取实验的单个输出:

如果你的数据包含这样“打包”过的值,那么一般来说使用数组类型都要好于给数据集添加额外的维度。因为这样做不仅让访问更方便,而且在语义上也更有意义。

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

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

发布评论

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