NumPy 2.0.0 发布,2006 年以来的首个主要版本


NumPy 2.0.0 现已发布,这是自 2006 年以来的第一个主要版本,是自上一个功能版本发布以来经过 11 个月开发的成果。该版本包含了来自 212 位贡献者提交的 1078 个 PR,引入了大量的新功能以及对 Python 和 C API 的更改。

此主要版本包括常规次要(功能)版本中不会发生的破坏性变更 - 包括 ABI break、type promotion rules 的更改,以及在 1.26.x 中可能未发出弃用警告的 API 更改。

Highlights

新功能:

  • 一个新的可变长度字符串 dtype,StringDType 以及新的 numpy.strings 命名空间,包含用于字符串操作的高性能 ufunc
  • 在所有 numpy.fft 函数中支持 float32 和 longdouble
  • 在主 numpy 命名空间中支持数组 API 标准。

性能改进:

  • 通过使用 Intel x86-simd-sort 和 Google Highway 库,排序函数(sort、argsort、partition、argpartition)已得到加速,并且可能会看到较大的(特定于硬件的)加速
  • 为 MacOS >=14 提供 macOS 加速支持和 binary wheels,显著提高了 MacOS 上线性代数运算的性能,并将 wheels 缩小了约 3 倍
  • numpy.char fixed-length string operations 已通过实现 ufuncs 加速,ufuncs 除了支持 fixed-length string dtypes 外,还支持 StringDType
  • 一种新的 tracing 和 introspection API,opt_func_info,用于确定哪些特定于硬件的内核可用并将被调度
  • numpy.save 现在使用 pickle 协议版本 4 来保存具有对象 dtype 的数组,这允许 pickle 对象大于 4GB,并将大型数组的保存速度提高约 5%。

Python API 改进:

  • 公共和私有 API 之间有明确的划分,采用新的模块结构,并且每个 public function 现在都可以在一个地方使用,
  • 删除了许多不推荐的函数和别名。这将使学习和使用 NumPy 变得更容易。主命名空间中的对象数量减少了约 10%,numpy.lib 中的对象数量减少了约 80%
  • 规范的 dtype 名称和新的 isdtype 自省函数

C API 改进:

  • 用于创建自定义 dtypes 的新公共 C API
  • 删除了许多过时的函数和宏,并隐藏了私有内部函数以方便将来的扩展
  • 新的、更易于使用的初始化函数: PyArray_ImportNumPyAPI 和 PyUFunc_ImportUFuncAPI

改进的行为:

  • 通过采用 NEP 50,改进了 type promotion 行为。有关详细信息,可参阅 NEP 和 NumPy 2.0 迁移指南。因为此更改可能会导致输出 dtypes 发生变化,并降低混合 dtype 操作的精度结果。
  • Windows 上的默认整数类型现在是 int64 而不是 int32,与其他平台上的行为相匹配
  • 数组的最大维数从 32 更改为 64

文档:

  • 参考指南导航得到了显着改进,现在有关于 NumPy module structure 的文档
  • 从源文档构建的内容被完全重写

此外,NumPy 内部结构也发生了很多变化,包括继续将代码从 C 迁移到 C++,以使得将来改进和维护 NumPy 变得更加容易。

值得一提的是,所有的改进都是有代价的。具体代价是:

  • 向后兼容性。Python 和 C API 都有很多破坏性更改。在大多数情况下,都会有明确的错误消息告知用户如何调整其代码。但是,也存在一些行为变化,无法给出这样的错误消息 - 具体可参照弃用和兼容性部分以及 NumPy 2.0 迁移指南中的介绍。注意,有一种 ruff 模式可以自动修复 Python 代码中的许多问题。
  • 对 NumPy ABI 的破坏性更改。因此,使用 NumPy C API 并根据 NumPy 1.xx 版本构建的软件包二进制文件将无法在 NumPy 2.0 中运行。导入时,此类软件包将出现 ImportError,并显示二进制不兼容的信息。针对NumPy 2.0构建的二进制文件可以在运行时同时适用于NumPy 2.0和1.x。有关更多详细信息,可参阅 NumPy 2.0-specific advice

官方建议所有依赖 NumPy ABI 的下游包针对 NumPy 2.0 构建新版本,并验证该版本是否适用于 2.0 和 1.26 - 最好是在 2.0.0rc1(将是 ABI-stable)和最终的 2.0.0 版本之间的,以避免给用户带来问题。

此版本支持的 Python 版本为 3.9-3.12。

更多详情可查看发布说明。


相關推薦

2022-10-15

SQLAlchemy 2.0.0 首个 Beta 版本已发布。SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射 (ORM) 框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。 发布公告写道,2.0 旨在适应现代化 Python 的实际使

2022-03-24

配置、性能和事件等。它最初被称为 Zenoss Core,并以 GPL2 发布。 Zenoss 社区版的首个版本于 2006 年 11 月发布,距今已有超过 15 年历史,被下载次数也已达到数百万次的规模,Zenoss 社区版如今已成为各行业各种规模的公司都在使

2022-02-23

图形库,最初由 OpenedHand 负责开发。其首个版本于 2006 年发布,距今已有 16 年历史。后来 OpenedHand 被英特尔收购,并将 Clutter 用于与诺基亚联合开发的 MeeGo 之上,随后 Clutter 主要是交由 GNOME Project 负责开发与维护。 放眼 2006

2023-10-16

FreeBSD 14.0 首个 RC 已发布,这是该项目自 2021 年 4 月发布 13.0 以来的首个大版本更新。 FreeBSD 14.0 计划于 2023 年 11 月 7 日正式发布,支持 amd64、i386、powerpc、powerpc64、powerpc64le、powerpcspe、armv7、aarch64 和 riscv64 架构。 自 14.0-BETA5

2023-10-27

Ubuntu 的下一个长期支持 (LTS) 版本 Ubuntu 24.04 的最终发布日期已确定,计划于 2024 年 4 月 25 日发布。 除此之外,Ubuntu 24.04 的功能冻结阶段定于 2024 年 2 月 29 日;Ubuntu 24.04 beta 计划于 2024 年 4 月 4 日发布。 目前尚未知晓 Ubuntu 24

2022-11-06

SQLAlchemy 2.0 的第三个 Beta 版本已发布。 SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射 (ORM) 框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。 发布公告写道,SQLAlchemy 2.0.0 第三个 Beta 版

2022-10-23

SQLAlchemy 2.0.0 第二个 Beta 版本已发布。 SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射 (ORM) 框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。 发布公告写道,第一个 Beta 测试版发布后,获得

2023-01-11

SQLAlchemy 2.0 发布了第 2 个 RC 版本。 下载地址:https://www.sqlalchemy.org/download.html SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射 (ORM) 框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。 发布公

2024-07-24

1 是 2.0.x 系列中的最后一个版本,2.1.0rc1 将会很快会发布。 Improvements np.quantile使用closest_observation方法选择最接近的偶数阶统计量 这将 border cases 下 nearest 的定义从最接近奇数阶统计量更改为最接近偶数阶统计量。现

2023-06-18

tials。 这次品牌结构的调整也是英特尔自酷睿系列推出以来的首次调整。

2023-06-20

支持 inplace matrix 乘法(@=) NumPy 将在 Python 3.12 出来时发布 NumPy 1.26,这是因为 Python 3.12 已经放弃了 distutils,NumPy 将在未来的构建中转而使用 meson。 更多详情可查看:https://github.com/numpy/numpy/releases/tag/v1.25.0

2023-02-10

Google 于今天发布了 Android 14 的首个开发者预览版,这一发布时间与以往的发布时间类似,预计 Android 14 正式版将于今年第三季度推出。 支持多用户登录 一家人共用同一个设备的情况十分常见,尤其是共用平板电脑。除此之

2023-07-22

经过近五年的漫长岁月,Cython 3.0 宣布正式发布。 公告称,“Cython 3.0 在各个方面都优于之前的任何其他 Cython 版本。它更加 Python 化,与 C 和 C++ 集成得更好,支持更多 Python 实现和配置,提供了许多很棒的新语言特性。更快、

2023-02-18

MariaDB 10.11.2 现已正式推出。这是 MariaDB 10.11 系列的第一个 GA 版本,一个长期支持版本。 具体更新内容包括: Notable Items Red Hat Enterprise Linux、CentOS、Fedora、openSUSE 和 SUSE 的 Yum/DNF/Zypper 存储库在这个版本中更改为使用带有 SHA2