原文:
numpy.org/doc/
NumPy 1.21.6 发布说明
原文:
numpy.org/doc/1.26/release/1.21.6-notes.html
NumPy 1.21.6 是一个非常小的版本,实现了两个目标:
- 撤销了将 C 代码错误地回溯到 1.21.5 中。
- 为 Python 3.10 提供了 32 位 Windows 版本。
提供 32 位版本的目的是为了让最古老支持的 numpy 用户的生活更加轻松。
NumPy 1.21.5 发布说明
原文:
numpy.org/doc/1.26/release/1.21.5-notes.html
NumPy 1.21.5 是一个维护版本,修复了在 1.21.4 版本发布后发现的一些 bug,并进行了一些维护工作以延长 1.21.x 的生命周期。此版本支持的 Python 版本为 3.7-3.10。如果您想使用 gcc-11 编译自己的版本,您需要使用 gcc-11.2 以避免问题。
贡献者
本次发布共有 7 位贡献者。名字后带有“ ”的人第一次为此版本贡献了补丁。
- Bas van Beek
- Charles Harris
- Matti Picus
- Rohit Goswami
- Ross Barnowski
- Sayed Adel
- Sebastian Berg
合并的拉取请求
本次发布共合并了 11 个拉取请求。
- #20357: 维护: 不转发
_GenericAlias
的__(deep)copy__
调用… - #20462: BUG: 修复 float16 einsum 快速路径使用错误的临时变量
- #20463: BUG, DIST: 当可执行文件不存在时打印操作系统错误消息
- #20464: 构建: 在启动之前验证编译 C 源码的能力…
- #20465: BUG: 强制
npymath
尊重 ``npy_longdouble
- #20466: BUG: 修复无法创建对齐的空结构化数据类型的失败
- #20467: 增强: 提供一个方便的函数来替换 npy_load_module
- #20495: 维护: 更新支持 python3.10 的 wheel 版本
- #20497: BUG: 在 F2PY 转换中正确清除错误
- #20613: 开发: 添加一个 warningfilter 以修复 pytest 工作流。
- #20618: 维护: 至少不崩溃的帮助 boost::python 库
贡献者
本次发布共有 7 位贡献者。名字后带有“ ”的人第一次为此版本贡献了补丁。
- Bas van Beek
- Charles Harris
- Matti Picus
- Rohit Goswami
- Ross Barnowski
- Sayed Adel
- Sebastian Berg
合并的拉取请求
本次发布共合并了 11 个拉取请求。
- #20357: 维护: 不转发
_GenericAlias
的__(deep)copy__
调用… - #20462: BUG: 修复 float16 einsum 快速路径使用错误的临时变量
- #20463: BUG, DIST: 当可执行文件不存在时打印操作系统错误消息
- #20464: 构建: 在启动之前验证编译 C 源码的能力…
- #20465: BUG: 强制
npymath
尊重 ``npy_longdouble
- #20466: BUG: 修复无法创建对齐的空结构化数据类型的失败
- #20467: ENH: 提供一个方便的函数来替换 npy_load_module
- #20495: MAINT: 更新支持 Python 3.10 版本的 wheel
- #20497: BUG: 在 F2PY 转换中正确清除错误
- #20613: DEV: 添加警告过滤器以修复 pytest 工作流程
- #20618: MAINT: 至少不崩溃地帮助 boost::python 库
NumPy 1.21.4 发布说明
原文:
numpy.org/doc/1.26/release/1.21.4-notes.html
NumPy 1.21.4 是一个维护版本,修复了在 1.21.3 之后发现的一些错误。这里最重要的修复是修复了 NumPy 头文件,使它们在包含在 Mac universal2 轮子中时可以同时适用于 x86_64 和 M1 硬件。以前,头文件只适用于 M1,这导致为 x86_64 扩展构建时出现问题。在 Python 3.10 之前,由于存在 x86_64 的薄轮子,因此没有看到这个问题。此版本还为 Python 3.10 提供了薄 x86_64 Mac 轮子。
本次发布支持的 Python 版本为 3.7-3.10. 如果您想使用 gcc-11 编译自己的版本,您需要使用 gcc-11.2 以避免问题。
贡献者
共有 7 人为本次发布做出了贡献。名字后带有“ ”的人第一次为此贡献了补丁。
- 巴斯·范·贝克
- 查尔斯·哈里斯
- 伊苏鲁·费尔南多
- 马修·布雷特
- 赛义德·阿德尔
- 塞巴斯蒂安·伯格
- 傅立业(克里斯·傅)
合并的拉取请求
本次发布共合并了 9 个拉取请求。
- #20278: BUG: 修复类型存根中
dtype
的阴影引用 - #20293: BUG: 修复 universal2 构建的头文件
- #20294: BUG:
VOID_nonzero
有时可能会改变对齐标志 - #20295: BUG: 不要在非对齐数组上使用非零快速路径
- #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)
- #20297: BUG, SIMD: 修复 64 位/8 位整数除以标量的问题
- #20298: BUG, SIMD: 解决在 MSVC 上广播 SIMD 64 位整数的问题…
- #20300: REL: 为 NumPy 1.21.4 版本做准备。
- #20302: TST: 修复
Arrayterator
类型测试失败
贡献者
共有 7 人为本次发布做出了贡献。名字后带有“ ”的人第一次为此贡献了补丁。
- 巴斯·范·贝克
- 查尔斯·哈里斯
- 伊苏鲁·费尔南多
- 马修·布雷特
- 赛义德·阿德尔
- 塞巴斯蒂安·伯格
- 傅立业(克里斯·傅)
合并的拉取请求
本次发布共合并了 9 个拉取请求。
- #20278: BUG: 修复类型存根中
dtype
的阴影引用 - #20293: BUG: 修复 universal2 构建的头文件
- #20294: BUG:
VOID_nonzero
有时可能会改变对齐标志 - #20295: BUG: 不要在非对齐数组上使用非零快速路径
- #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)
- #20297: BUG, SIMD: 修复 64 位/8 位整数除以标量的问题
- #20298: BUG, SIMD: 解决在 MSVC 上广播 SIMD 64 位整数的问题…
- #20300: REL: 为 NumPy 1.21.4 版本做准备。
- #20302: TST: 修复
Arrayterator
类型测试失败
NumPy 1.21.3 版本说明
原文:
numpy.org/doc/1.26/release/1.21.3-notes.html
NumPy 1.21.3 是一个维护版本,修复了 1.21.2 之后发现的一些错误。它还提供了 64 位 Python 3.10.0 版程序包。请注意 Python 3.10 的一些怪异之处:
- Windows、Mac 或 Linux 上没有 32 位的程序包。
- Mac Intel 构建仅适用于通用 2 程序包。
此版本支持的 Python 版本为 3.7-3.10。如果要使用 gcc-11 编译自己的版本,则需要使用 gcc-11.2 以避免出现问题。
贡献者
共有 7 个人为此版本做出了贡献。名字后有“ ”的人第一次为此版本提交了补丁。
- Aaron Meurer
- Bas van Beek
- Charles Harris
- 开发者生态工程
- Kevin Sheppard
- Sebastian Berg
- Warren Weckesser
已合并的拉取请求
总共合并了 8 个拉取请求。
- #19745: 增强:向 3 个
generic
/ndarray
方法添加 dtype 支持 - #19955: 修复:解决 Apple silicon 上的除零错误 测试失败…
- #19958: 维护:将仅进行类型检查的 ufunc 子类标记为 ufunc 别名…
- #19994: 修复:np.tan(np.inf) 测试失败
- #20080: 修复:在模拟 int128 的 PCG 中修正了不正确的进位
- #20081: 修复:修复 PyArray_CompareFunc 中日期时间的 NaT 处理…
- #20082: 文档:确保我们也将文档添加到字典中…
- #20106: 修复:核心:result_type(0, np.timedelta64(4)) 会导致段错误。
贡献者
共有 7 个人为此版本做出了贡献。名字后有“ ”的人第一次为此版本提交了补丁。
- Aaron Meurer
- Bas van Beek
- Charles Harris
- 开发者生态工程
- Kevin Sheppard
- Sebastian Berg
- Warren Weckesser
已合并的拉取请求
总共合并了 8 个拉取请求。
- #19745: 增强:向 3 个
generic
/ndarray
方法添加 dtype 支持 - #19955: 修复:解决 Apple silicon 上的除零错误 测试失败…
- #19958: 维护:将仅进行类型检查的 ufunc 子类标记为 ufunc 别名…
- #19994: 修复:np.tan(np.inf) 测试失败
- #20080: 修复:在模拟 int128 的 PCG 中修正了不正确的进位
- #20081: 修复:修复 PyArray_CompareFunc 中日期时间的 NaT 处理…
- #20082: 文档:确保我们也将文档添加到字典中…
- #20106: 错误:核心:result_type(0, np.timedelta64(4))将导致段错误。
NumPy 1.21.2 版本说明
原文:
numpy.org/doc/1.26/release/1.21.2-notes.html
NumPy 1.21.2 是一个维护版本,修复了 1.21.1 发布后发现的错误。它还为下游测试提供了 64 位 manylinux Python 3.10.0rc1 的安装包。需要注意的是,Python 3.10 尚未正式发布。此外,它还对 ARM64 架构的 Windows 提供了初步支持,但该平台上没有 OpenBLAS 支持,也没有相应的安装包。
此版本支持的 Python 版本为 3.7-3.9。1.21.x 系列与 Python 3.10.0rc1 兼容,正式发布后将正式支持 Python 3.10。之前在 gcc-11.1 上的问题已经通过 gcc-11.2 进行了修复,请检查您使用的 gcc 版本。
贡献者
总共有 10 个人对此版本做出了贡献。名字后面带“ ”的人是首次贡献补丁。
- Bas van Beek
- Carl Johnsen
- Charles Harris
- Gwyn Ciesla
- Matthieu Dartiailh
- Matti Picus
- Niyas Sait
- Ralf Gommers
- Sayed Adel
- Sebastian Berg
合并的拉取请求
总共有 18 个拉取请求合并到了此版本中。
- #19497:MAINT:将 1.21.x 的 Python 版本设置为
<3.11
- #19533:BUG:修复导入
numpy.typing
可能引发的问题 - #19646:MAINT:升级 Python 3.10 的 Cython 版本。
- #19648:TST:将 Python 3.10 的测试版本从 beta4 提升到 rc1
- #19651:TST:在 runtests.py 中避免使用 distutils.sysconfig
- #19652:MAINT:向 nditer 类型提示添加了缺失的双下方法
- #19656:BLD,SIMD:修复当
-Werror
不适用时测试额外检查的问题… - #19657:BUG:删除布尔输出的逻辑对象 ufunc
- #19658:MAINT:将.coveragerc 文件包含在源代码分发包中,以支持…
- #19659:BUG:修复掩码迭代器输出复制路径中的错误写入
- #19660:ENH:为 ARM 架构的 Windows 添加支持
- #19661:BUG:为 platlib 的模板化参数添加基础
- #19662���BUG,DEP:非默认的 UFunc 签名/ dtype 用法应该被弃用
- #19666:MAINT:添加对 Python 3.10 的支持。
- #19668:TST,BUG:运行
runtest.py
时消除路径分隔符 - #19671:BLD:检查 libflame 时加载额外的标志
- #19676:BLD:更新 circleCI 的 Docker 镜像
- #19677: REL: 为 1.21.2 版本做准备。
贡献者
本次发布共有 10 位贡献者。名字后带 “ ” 的人是首次为补丁做出贡献。
- Bas van Beek
- Carl Johnsen
- Charles Harris
- Gwyn Ciesla
- Matthieu Dartiailh
- Matti Picus
- Niyas Sait
- Ralf Gommers
- Sayed Adel
- Sebastian Berg
已合并的拉取请求
本次发布合并了总共 18 个拉取请求。
- #19497: MAINT: 将 Python 版本设置为 1.21.x 的
<3.11
- #19533: BUG: 修复导入
numpy.typing
可能引发的问题 - #19646: MAINT: 更新 Cython 版本以支持 Python 3.10。
- #19648: TST: 将 Python 3.10 测试版本从 beta4 升级到 rc1
- #19651: TST: 避免在 runtests.py 中使用 distutils.sysconfig
- #19652: MAINT: 为 nditer 类型暗示添加丢失的双下划线方法
- #19656: BLD, SIMD: 修复在
-Werror
不适用时测试额外检查的问题… - #19657: BUG: 移除布尔输出的逻辑对象 ufuncs
- #19658: MAINT: 将 .coveragerc 包含在源分发中以支持…
- #19659: BUG: 修复掩码迭代器输出复制路径中的错误写入
- #19660: ENH: 为 Windows arm 目标添加支持
- #19661: BUG: 为 platlib 添加基础模板参数
- #19662: BUG,DEP: 非默认的 UFunc 签名/dtype 使用应该被弃用
- #19666: MAINT: 添加对 Python 3.10 的支持。
- #19668: TST,BUG: 运行
runtest.py
时消毒路径分隔符 - #19671: BLD: 在检查 libflame 时加载额外标志
- #19676: BLD: 更新 circleCI docker 镜像
- #19677: REL: 为 1.21.2 版本做准备。
NumPy 1.21.1 发布说明
原文:
numpy.org/doc/1.26/release/1.21.1-notes.html
NumPy 1.21.1 是一个维护版本,用于修复在 1.21.0 版本发布后发现的问题,并更新 OpenBLAS 至 v0.3.17 以解决 arm64 上的问题。
此版本支持的 Python 版本为 3.7-3.9。1.21.x 系列兼容开发版 Python 3.10。 Python 3.10 将在发布后得到官方支持。
警告
有未解决的问题,使用 gcc-11.1 编译 NumPy 1.20.0。
- 优化级别*-O3*在运行测试时会导致许多不正确的警告。
- 在一些硬件上,NumPY 会陷入无限循环。
贡献者
共有 11 人贡献了此版本。名字旁边带有“ ”符号的人是第一次贡献补丁。
- Bas van Beek
- Charles Harris
- Ganesh Kathiresan
- Gregory R. Lee
- Hugo Defois
- Kevin Sheppard
- Matti Picus
- Ralf Gommers
- Sayed Adel
- Sebastian Berg
- Thomas J. Fan
合并的拉取请求
共合并了 26 个拉取请求以进行此发布。
- #19311: REV,BUG: 用
typing.Any
替换NotImplemented
- #19324: MAINT:修复
ndarray.real
和imag
的返回 dtype - #19330: MAINT:在定义中用
dtype
替换"dtype[Any]"
- #19342: DOC:修复一些生成 pdf 文件时崩溃的文档字符串。
- #19343: MAINT:提升 scipy-mathjax
- #19347: BUG:修复大数组和大端机器的 arr.flat.index
- #19348: ENH: 添加
numpy.f2py.get_include
函数 - #19349: BUG: 修复 ufunc dtype 处理中的引用计数泄漏
- #19350: MAINT:注释
np.number
子类的缺失属性 - #19351: BUG: 修复零大小 void 的强制转换安全性和比较
- #19352: BUG: 修正 random 中的 Cython 声明
- #19353: BUG:防止访问空子数组的 base 属性
- #19365: BUG,SIMD:修复在 Darwin 上检测 AVX512 功能
- #19366: MAINT:在 distutils 模板处理中删除
print()
语句 - #19390: ENH:在 show_config 中添加 SIMD 体系结构
- #19391: BUG: 不对所有 nans 引发弃用警告…
- #19392: BUG: 修复对象到任意类型的强制转换代码中的 NULL 特殊情况
- #19430: MAINT:在 travis 上使用 arm64-graviton2 进行测试
- #19495: 构建:更新 OpenBLAS 到 v0.3.17.
- #19496: 维护:避免在除法 SIMD 代码注释中使用 Unicode 字符。
- #19499: 错误,SIMD:修复 GCC-11 上非零计数的无限循环。
- #19500: 错误:修复
npiter_multi_index_set
中的 numpy.npiter 泄露。 - #19501: 测试:修复 python 3.9.0 中
GenericAlias
测试失败。 - #19502: 维护:开始使用 Python 3.10.0b3 进行测试。
- #19503: 维护:为基于对象和 ctypes 的缺失 dtype 重载添加。
- #19510: 发布:准备 NumPy 1.21.1 版本发布。
贡献者
共有 11 人为本次发布做出了贡献。名字前带“ ”符号的人第一次贡献了补丁。
- Bas van Beek
- Charles Harris
- Ganesh Kathiresan
- Gregory R. Lee
- Hugo Defois
- Kevin Sheppard
- Matti Picus
- Ralf Gommers
- Sayed Adel
- Sebastian Berg
- Thomas J. Fan
合并的拉取请求
本次发布共合并了 26 个拉取请求。
- #19311: 修订,错误:用
typing.Any
替换NotImplemented
。 - #19324: 维护:修复
ndarray.real
和imag
的返回 dtype。 - #19330: 维护:在
dtype[Any]
的定义中用dtype
替换"dtype[Any]"
。 - #19342: 文档:修复一些会导致 pdf 生成崩溃的文档字符串。
- #19343: 维护:升级 scipy-mathjax。
- #19347: 错误:修复大数组和大端机器上
arr.flat.index
的问题。 - #19348: 增强:添加
numpy.f2py.get_include
函数。 - #19349: 错误:修复 ufunc dtype 处理中的引用计数泄漏。
- #19350: 维护:注释
np.number
子类的缺失属性。 - #19351: 错误:为零大小的 voids 修复强制转换安全性和比较。
- #19352: 错误:在 random 中更正 Cython 声明。
- #19353: 错误:防止访问 NULL 子数组的基本属性。
- #19365: 错误,SIMD:修复在 Darwin 上检测 AVX512 特性的问题。
- #19366: 维护:移除模板处理中的
print()
。 - #19390: 增强:在 show_config 中显示 SIMD 架构。
- #19391: 错误:不要对唯一的所有 nans 引发停用警告。
- #19392: BUG:修复了对象到任何类型转换代码中的 NULL 特殊情况
- #19430: MAINT:在 travis 上使用 arm64-graviton2 进行测试
- #19495: BUILD:将 OpenBLAS 更新至 v0.3.17
- #19496: MAINT:避免在 SIMD 代码注释中使用 Unicode 字符
- #19499: BUG, SIMD:修复了 GCC-11 上对非零计数时的无限循环问题
- #19500: BUG:修复了 numpy.npiter 在 npyiter_multi_index_set 中的内存泄漏问题
- #19501: TST:修复了 Python 3.9.0 的
GenericAlias
测试失败问题 - #19502: MAINT:开始使用 Python 3.10.0b3 进行测试。
- #19503: MAINT:为基于对象和 ctypes 的遗漏 dtype 进行补充…
- #19510: REL:为 NumPy 1.21.1 版本做好准备。
NumPy 1.21.0 发行说明
原文:
numpy.org/doc/1.26/release/1.21.0-notes.html
NumPy 1.21.0 版本的亮点是
- 持续的 SIMD 工作,涵盖更多函数和平台,
- 新的 dtype 基础架构和类型转换的初步工作,
- Python 3.8 和 Python 3.9 的通用 wheels 在 Mac 上可用,
- 改进了文档,
- 改进了注释,
- 新的
PCG64DXSM
位生成器用于随机数。
另外还有大量的错误修复和其他改进。
本版本支持的 Python 版本为 3.7-3.9。Python 3.10 发布后将添加官方支持。
警告
在使用 gcc-11.1 编译 NumPy 1.20.0 时存在未解决的问题。
- 优化级别 -O3 在运行测试时会产生许多不正确的警告。
- 在某些硬件上,NumPY 会陷入一个无限循环。
新函数
添加PCG64DXSM
BitGenerator
在大规模并行的上下文中使用PCG64
BitGenerator
已显示出统计弱点,这在 numpy 1.17 版本发布时并不明显。大多数用户永远不会观察到这种弱点,并且可以继续安全地使用PCG64
。 我们引入了一个新的PCG64DXSM
BitGenerator
,它将最终成为未来版本中default_rng
使用的新默认BitGenerator
实现。PCG64DXSM
解决了统计上的弱点,同时保留了PCG64
的性能和特征。
更多详细信息请参见 升级 PCG64 到 PCG64DXSM。
(gh-18906)
过时的弃用项
-
shape
参数unravel_index
不能再作为dims
关键字参数传递。(在 NumPy 1.16 版本中已弃用。) (gh-17900) - 函数
PyUFunc_GenericFunction
已被禁用。 它在 NumPy 1.19 版本中已被弃用。用户应该直接使用 Python API 调用 ufunc。 (gh-18697) - 函数
PyUFunc_SetUsesArraysAsData
已被禁用。它在 NumPy 1.19 版本中已被弃用。 (gh-18697) - 类
PolyBase
已被移除(在 numpy 1.9.0 中弃用)。请改用抽象的ABCPolyBase
类。 (gh-18963) - 已删除未使用的
PolyError
和PolyDomainError
异常。 (gh-18963)
弃用
.dtype
属性必须返回一个dtype
如果传递给np.dtype
或作为dtype=obj
参数的对象的.dtype
属性不是 dtype,则现在将发出DeprecationWarning
。 NumPy 将停止尝试递归地强制转换.dtype
的结果。
(gh-13578)
numpy.convolve
和numpy.correlate
的不完全匹配已弃用
convolve
和correlate
在函数中找到不区分大小写和/或不完全匹配的mode
参数时现在会发出警告。 对于mode
参数,传递完整的"same"
、"valid"
、"full"
字符串,而不是"s"
、"v"
、"f"
。
(gh-17492)
np.typeDict
现已正式弃用
np.typeDict
是np.sctypeDict
的已弃用别名,已经弃用了 14 年以上了(6689502)。获取np.typeDict
时将会发出弃用警告。
(gh-17586)
创建类似数组时将引发异常
当对象在访问特殊属性__array__
或__array_interface__
时引发异常时,通常会忽略此异常。 当异常不是 AttributeError 时,现在会发出警告。 要消除警告,必须调整引发异常的类型以引发AttributeError
。
(gh-19001)
四个ndarray.ctypes
方法已弃用
ndarray.ctypes
对象的四种方法已被弃用,因为它们是各自属性的(未记录的)实现工件。
有关的方法包括:
-
_ctypes.get_data
(使用_ctypes.data
代替) -
_ctypes.get_shape
(使用_ctypes.shape
代替) -
_ctypes.get_strides
(使用_ctypes.strides
代替) -
_ctypes.get_as_parameter
(使用_ctypes._as_parameter_
代替)
(gh-19031)
过期的弃用
-
shape
参数不能再作为dims
关键字参数传递给numpy.unravel_index
。 (在 NumPy 1.16 中已弃用。) (gh-17900) - 函数
PyUFunc_GenericFunction
已被禁用。它在 NumPy 1.19 中已被弃用。用户应该直接使用 Python API 调用 ufunc。 (gh-18697) - 函数
PyUFunc_SetUsesArraysAsData
已被禁用。它在 NumPy 1.19 中已被弃用。 (gh-18697)
删除已弃用的PolyBase
和未使用的PolyError
和PolyDomainError
类 PolyBase
已被移除(自 numpy 1.9.0 版本起废弃)。请改用抽象类 ABCPolyBase
。
此外, 从 numpy.polynomial
中删除了未使用的 PolyError
和 PolyDomainError
异常。
(gh-18963)
兼容性说明
通用函数中的错误类型变化
在某些情况下,通用函数现在可能会对非法输入抛出不同的错误。主要的改变是用更合适的 TypeError
替代了 RuntimeError
。当在同一调用中存在多个错误时,NumPy 现在可能会抛出不同的错误。
(gh-15271)
__array_ufunc__
参数验证
NumPy 现在会在调用 __array_ufunc__
之前部分验证参数。以前,当已知会进行派发时,可以传递无效的参数(例如不存在的关键字参数)。
(gh-15271)
__array_ufunc__
和其他位置参数
以前,所有位置传递的参数都会检查 __array_ufunc__
的支持。在 reduce
、accumulate
和 reduceat
的情况下,所有参数都可以通过位置传递。这意味着当它们通过位置传递时,它们以前可能已经被要求通过 __array_ufunc__
处理该通用函数调用。由于这取决于参数是通过位置还是通过关键字传递的方式,现在 NumPy 只会对输入和输出数组进行派发。例如,NumPy 永远不会对降维中的 where
数组进行派发,如 np.add.reduce
。
(gh-15271)
验证 Generator.uniform
的输入值
检查 np.random.Generator.uniform
中的 high - low >= 0
,如果 low > high
则引发 ValueError
。先前,无序输入是允许的,并且会静默交换,所以如果 low > high
,生成的值是 high (low - high) * random()
。
(gh-17921)
默认包含路径中删除 /usr/include
使用numpy.distutils
构建包时,默认的包含路径不再包含/usr/include
。这条路径通常由编译器添加,硬编码可能会引起问题。如果这引起了问题,请提一个 issue。在 PR 18658 中有一个解决方法。
(gh-18658)
比较操作符 dtype=...
的变化
当比较通用函数(如 equal
、less
等)使用 dtype=
(或 signature
)参数时,将来这将表示所需的输出 dtype。这意味着:
np.equal(2, 3, dtype=object)
将来,如下情况下将会发出 FutureWarning
并返回一个 object
数组:
np.equal(None, None, dtype=object)
因为 np.array(None)
已经是一个对象数组,所以将返回一个 FutureWarning
。(对于其他一些 dtype 也是如此。)
由于比较通常只返回布尔数组,因此在将来提供任何其他 dtype 将始终引发错误,并现在会给出 DeprecationWarning
。
(gh-18718)
在 ufuncs 中对 dtype
和 signature
参数的更改
通用函数参数 dtype
和 signature
也适用于 np.add.reduce
等减少函数(它是 np.sum
的实现)在提供的 dtype
不是“基本”dtype 时现在会发出警告。
NumPy 几乎总是忽略这些输入的元数据、字节顺序或时间单位。现在,NumPy 将始终忽略它并在字节顺序或时间单位改变时引发错误。以下是将产生错误的最重要的更改示例。在某些情况下,先前存储的信息不被忽略,现在都会引发错误:
代码语言:javascript复制# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")
# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")
# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")
# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]") # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]") # Now returns "s" (from `arr`)
对于像 np.sum
这样内部使用它们的函数也是如此。这个改变是为了在 NumPy 内部实现一致的处理。
如果你遇到了这些问题,在大多数情况下,例如通过 dtype=np.timedelta64
传递,这清楚地表示了一个没有任何单位或字节顺序定义的一般 timedelta64
。如果需要精确指定输出 dtype,则可以通过转换输入或使用*out=*来提供输出数组来执行。
在未来,NumPy 可能会选择允许在此处提供精确的输出 dtype
,这将在之前加上一个 FutureWarning
。
(gh-18718)
Ufunc signature=...
和 dtype=
的泛化和 casting
np.ufunc(1.0, 1.0, signature=...)
或 np.ufunc(1.0, 1.0, dtype=...)
的行为现在在 1.21 与 1.20 中可能会产生不同的循环,因为推广的变化。当先前使用 signature
时,对输入的强制转换检查被放宽了,这可能导致不安全地对输入进行降级,特别是如果与 casting="unsafe"
结合使用。
现在强制转换是安全的。如果只提供了部分签名,例如使用 signature=("float64", None, None)
,这可能导致找不到循环(错误)。在这种情况下,有必要提供完整的签名以强制转换输入。如果使用 dtype="float64"
或者只设置输出(例如 signature=(None, None, "float64")
),则不变。我们预计很少有用户会受到此更改的影响。
进一步地,dtype="float64"
的含义已经略有修改,现在严格地只强制正确的输出(而不是输入)DTypes。这意味着现在它总是等价于:
signature=(None, None, "float64")
(如果 ufunc 有两个输入和一个输出)。由于这可能导致在某些情况下找不到循环,因此 NumPy 通常也会搜索循环:
代码语言:javascript复制signature=("float64", "float64", "float64")
如果第一个搜索失败。在将来,可以定制此行为以实现更复杂的 ufunc 的预期结果。(对于某些通用函数,如 np.ldexp
输入可以有不同的 DTypes。)
(gh-18880)
Distutils 在 clang 上强制使用严格的浮点模型
当使用 clang 编译时,NumPy distutils 现在将始终添加-ffp-exception-behavior=strict
编译器标志。 Clang 默认为非严格版本,这允许编译器生成不正确设置浮点警告/错误的代码。
(gh-19049)
C API 变更
使用ufunc->type_resolver
和“类型元组”
NumPy 现在在调用类型解析器函数之前对“类型元组”参数进行规范化。 请注意,使用此类型解析器的行为是遗留行为,并且 NumPy 在可能的情况下不会执行此操作。 如果执行ufunc->type_resolver
或PyUFunc_DefaultTypeResolver
,则强烈不推荐,现在会规范化类型元组。 请注意,这不会影响提供类型解析器,预计在大多数情况下仍将继续工作。 如果您有意外使用类型解析器的情况,请通知 NumPy 开发人员,以便找到解决方案。
(gh-18718)
新功能
添加了一个 mypy 插件,用于处理特定平台的numpy.number
精度
现在提供了一个mypy插件,用于自动分配某些number
子类(包括int_
、intp
和longlong
)的(平台相关)精度。 查看关于标量类型的文档,全面了解受影响的类。
请注意,虽然插件的使用是完全可选的,但如果没有插件,则上述类的精度将被推断为Any
。
要启用插件,必须将其添加到 Mypy 的配置文件中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-17843)
让 mypy 插件管理扩展精度的numpy.number
子类
mypy插件,在 numpy/numpy#17843中引入,已扩展:插件现已删除不适用于相关平台的平台特定扩展精度类型的注释。 例如,当不可用时,将删除float128
。
没有插件all扩展精度类型将在 Mypy 看来,在所有平台上都可用。
要启用插件,必须将其添加到 Mypy 的配置文件中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-18322)
打印浮点值的新min_digits
参数。
对于 dragon4 浮点打印函数format_float_positional
和format_float_scientific
,添加了一个新的min_digits
参数。这个关键字确保在 unique=True 模式下打印时,至少会打印给定数量的数字,即使额外的数字对于唯一指定值是不必要的。它是 precision 参数的对应物,后者设置要打印的最大数字数量。在 fixed precision 模式下 unique=False,它没有效果,precision 参数固定数字数量。
(gh-18629)
f2py 现在可以识别 Fortran 抽象接口块了。
f2py
现在可以解析抽象接口块了。
(gh-18695)
通过环境变量配置 BLAS 和 LAPACK。
可以通过使用NPY_BLAS_LIBS
和NPY_LAPACK_LIBS
环境变量来绕过已安装的 BLAS 和 LAPACK 库的自动检测。相反,将直接使用这些环境变量中的链接标志,并假定语言为 F77。这在已知自动构建中确切已知已安装的 BLAS 和 LAPACK 时特别有用。一个用例是通过存根库链接在运行时替换实际实现。
如果设置了NPY_CBLAS_LIBS
(除了NPY_BLAS_LIBS
之外还是可选的),则会使用它,通过定义HAVE_CBLAS
并将环境变量内容附加到链接标志中。
(gh-18737)
ndarray
现在有一个可在运行时订阅的别名。
添加了numpy.typing.NDArray
,它是np.ndarray[Any, np.dtype[~Scalar]]
的运行时订阅别名。新的类型别名可用于注释具有给定 dtype 和未指定形状的数组。¹
¹截至 1.21 版本,NumPy 不支持数组形状的注释,但预计将来会有所改变(参见PEP 646)。
示例
代码语言:javascript复制>>> import numpy as np
>>> import numpy.typing as npt
>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)
>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
... return np.array(a)
(gh-18935)
改进
numpy.unwrap
的任意period
选项。
解包相位的间隔大小不再限制为2 * pi
。这对于解包度数特别有用,但也可用于其他间隔。
>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180.])
>>> unwrap(phase_deg, period=360)
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
180., 220., 260., 300., 340., 380., 420., 460., 500.,
540.])
(gh-16987)
np.unique
现在返回单个NaN
当np.unique
在具有多个NaN
条目的数组上操作时,返回的数组包含每个在原始数组中为NaN
的条目的一个NaN
。现在改进为返回数组仅包含最后一个元素为NaN
的NaN
。
对于复数数组,所有 NaN
值都被视为等价(无论 NaN
是位于实部还是虚部)。作为返回数组的代表,被选择为字典顺序最小的值 - 请参考 np.sort
了解复数数组的字典顺序是如何定义的。
(gh-18070)
Generator.rayleigh
和 Generator.geometric
的性能得到了改进
Generator
中 Rayleigh 和几何随机变量生成的性能得到了改进。这两者都是指数随机变量的变换,慢速基于对数的反向 cdf 变换已被基于 Ziggurat 的指数变量生成器所取代。
此更改会在产生这两个分布的变量时打破生成的变量流。
(gh-18666)
替代品注释已得到改进
所有替代品注释,以前标记为 typing.Any
,已得到改进。在适当的情况下,它们已被明确的函数定义、类或其他杂项对象替换。
(gh-18934)
性能改进
改进了 NumPy 数组的整数除法性能
NumPy 数组的整数除法现在在除数为常数时使用 libdivide。通过使用 libdivide 和其他轻微优化,速度大大提升。//
运算符和 np.floor_divide
利用了这些新更改。
(gh-17727)
提高了 np.save
和 np.load
对于小数组的性能
对于小数组,np.save
现在速度更快。
对于小数组,np.load
速度也更快,但只在序列化版本 >= (3, 0)
时。
这两者是通过删除仅适用于 Python 2 的检查来完成的,同时仍然与可能由 Python 2 创建的数组保持兼容性。
(gh-18657)
更改
numpy.piecewise
输出类现在与输入类匹配
当输入到 piecewise
的 ndarray
子类被使用时,它们将被传递到这些函数中。输出现在也将是相同的子类。
(gh-18110)
启用 Accelerate 框架
随着 macOS 11.3 版本的发布,当使用加速框架的 BLAS 和 LAPACK 实现时,numpy 遇到的几种不同的问题应该得到解决。这个改变将在 macOS 上启用加速框架作为一个选项。如果发现其他问题,请使用开发者反馈助手工具(developer.apple.com/bug-reporting/
)提出 bug 报告。我们打算及时解决遇到的问题,并计划继续支持和更新我们的 BLAS 和 LAPACK 库。
(gh-18874)
新功能
添加 PCG64DXSM
BitGenerator
使用 PCG64
BitGenerator
在大规模并行环境中已经显示出统计上的问题,这些问题在 numpy 1.17 版本首次发布时并不明显。大多数用户永远也不会观察到这种弱点,可以继续安全地使用 PCG64
。我们引入了一个新的 PCG64DXSM
BitGenerator
,它最终将成为未来版本中 default_rng
使用的新默认 BitGenerator
实现。PCG64DXSM
解决了统计上的问题,同时保留了 PCG64
的性能和功能。
更多详情请参见 将 PCG64 升级为 PCG64DXSM 。
(gh-18906)
添加 PCG64DXSM
BitGenerator
使用 PCG64
BitGenerator
在大规模并行环境中已经显示出统计上的问题,这些问题在 numpy 1.17 版本首次发布时并不明显。大多数用户永远也不会观察到这种弱点,可以继续安全地使用 PCG64
。我们引入了一个新的 PCG64DXSM
BitGenerator
,它最终将成为未来版本中 default_rng
使用的新默认 BitGenerator
实现。PCG64DXSM
解决了统计上的问题,同时保留了 PCG64
的性能和功能。
更多详情请参见 将 PCG64 升级为 PCG64DXSM 。
(gh-18906)
过期的弃用标记
-
shape
参数unravel_index
不能再被作为dims
关键字参数传递。(在 NumPy 1.16 版本中被弃用。) (gh-17900) - 函数
PyUFunc_GenericFunction
已被禁用。它在 NumPy 1.19 中已被弃用。用户应该直接使用 Python API 调用 ufunc。 (gh-18697) - 函数
PyUFunc_SetUsesArraysAsData
已被禁用。在 NumPy 1.19 中已被弃用。 (gh-18697) - 类
PolyBase
已被移除(在 numpy 1.9.0 中已被弃用)。请改用抽象类ABCPolyBase
。 (gh-18963) - 未使用的
PolyError
和PolyDomainError
异常被移除。 (gh-18963)
弃用
.dtype
属性必须返回一个dtype
如果传递给np.dtype
或作为dtype=obj
参数的对象的.dtype
属性不是 dtype,则会发出DeprecationWarning
。NumPy 将停止尝试递归强制转换.dtype
的结果。
(gh-13578)
numpy.convolve
和numpy.correlate
的不精确匹配已被弃用
当函数中找到mode
参数不区分大小写和/或存在不精确匹配时,convolve
和correlate
现在会发出警告。对于mode
参数,传递完整的"same"
,"valid"
,"full"
字符串,而不是"s"
,"v"
,"f"
。
(gh-17492)
np.typeDict
已被正式弃用
np.typeDict
是np.sctypeDict
的弃用别名,并且已经是如此超过 14 年了(6689502)。现在获取np.typeDict
时将会发出弃用警告。
(gh-17586)
在类数组创建期间将会引发异常
当对象在访问特殊属性__array__
或__array_interface__
时引发异常时,通常会忽略该异常。现在,当异常不是 AttributeError 时会发出警告。要消除警告,引发异常的类型必须调整以引发AttributeError
。
(gh-19001)
四个ndarray.ctypes
方法已经被弃用
四个ndarray.ctypes
对象的方法已被弃用,因为它们是(未记录的)各自属性的实现产物。
相关的方法包括:
-
_ctypes.get_data
(请使用_ctypes.data
代替) -
_ctypes.get_shape
(请使用_ctypes.shape
代替) -
_ctypes.get_strides
(请使用_ctypes.strides
代替) -
_ctypes.get_as_parameter
(请使用_ctypes._as_parameter_
代替)
(gh-19031)
.dtype
属性必须返回一个dtype
如果传入np.dtype
或作为dtype=obj
参数的对象的.dtype
属性不是 dtype,则会发出DeprecationWarning
。NumPy 将停止尝试递归强制.dtype
的结果。
(gh-13578)
numpy.convolve
和numpy.correlate
的不精确匹配已经被弃用
当在函数中找到mode
参数的不精确匹配和/或忽略大小写时,convolve
和correlate
现在会发出警告。对mode
参数,应该传入完整的"same"
、"valid"
、"full"
字符串,而不是"s"
、"v"
、"f"
。
(gh-17492)
np.typeDict
已经正式弃用。
np.typeDict
是np.sctypeDict
的一个废弃别名,已经有 14 年之久(6689502)。现在在获取np.typeDict
时将发出弃用警告。
(gh-17586)
在创建类似数组时会发出异常
当一个对象在访问特殊属性__array__
或__array_interface__
时引发异常时,通常会忽略这个异常。现在,当异常不是 AttributeError 时,会发出警告。为了消除警告,引发异常的类型必须被适配为引发AttributeError
。
(gh-19001)
四个ndarray.ctypes
方法已被弃用
四个ndarray.ctypes
对象的方法已被弃用,因为它们是各自属性的(未记录的)实现工件。
受影响的方法有:
-
_ctypes.get_data
(使用_ctypes.data
代替) -
_ctypes.get_shape
(使用_ctypes.shape
代替) -
_ctypes.get_strides
(使用_ctypes.strides
代替) -
_ctypes.get_as_parameter
(使用_ctypes._as_parameter_
代替)
(gh-19031)
已过期的弃用标记
-
shape
参数numpy.unravel_index
现在不能再作为dims
关键字参数传递了(在 NumPy 1.16 中已被弃用)。 (gh-17900) - 函数
PyUFunc_GenericFunction
已被禁用。它在 NumPy 1.19 中已经被弃用。用户应该直接使用 Python API 调用 ufunc。 (gh-18697) - 函数
PyUFunc_SetUsesArraysAsData
已被禁用。它在 NumPy 1.19 中已经被弃用。 (gh-18697)
删除了已弃用的PolyBase
和未使用的PolyError
和PolyDomainError
类PolyBase
已被移除(在 numpy 1.9.0 中已弃用)。请改用抽象的ABCPolyBase
类。
此外,从 numpy.polynomial
中移除了未使用的PolyError
和PolyDomainError
异常。
(gh-18963)
移除已弃用的PolyBase
和未使用的PolyError
和PolyDomainError
类PolyBase
已被移除(在 numpy 1.9.0 中已弃用)。请改用抽象的ABCPolyBase
类。
此外,从numpy.polynomial
中移除了未使用的PolyError
和PolyDomainError
异常。
(gh-18963)
兼容性注释
通用函数中的错误类型更改
通用功能现在在某些情况下可能对无效输入引发不同的错误。主要变化在于RuntimeError
被更合适的TypeError
所取代。当同一调用中存在多个错误时,NumPy 现在可能会引发不同的错误。
(gh-15271)
__array_ufunc__
参数验证
NumPy 现在将在调用__array_ufunc__
之前部分验证参数。以前,当已知将进行分发时,可能会传递无效参数(例如不存在的关键字参数)。
(gh-15271)
__array_ufunc__
和额外的位置参数
以前,所有位置传递的参数都会检查是否支持__array_ufunc__
。在reduce
,accumulate
和reduceat
的情况下,所有参数都可以按位置传递。这意味着当它们按位置传递时,它们以前可能已被要求通过__array_ufunc__
处理 ufunc 调用。由于这取决于参数的传递方式(按位置还是关键字传递),NumPy 现在只会在输入和输出数组上分发。例如,NumPy 永远不会在类似np.add.reduce
的缩减中分发到where
数组上。
(gh-15271)
验证Generator.uniform
中的输入值
检查np.random.Generator.uniform
中的high - low >= 0
。若low > high
,则引发ValueError
。以前,接受并悄悄交换顺序的输入,因此,若low > high
,生成的值为high (low - high) * random()
。
(gh-17921)
从默认包含路径中删除/usr/include
使用numpy.distutils
构建包时,默认包含路径不再包括/usr/include
。此路径通常由编译器添加,硬编码它可能会出现问题。如果这造成问题,请提交一个问题。PR 18658 中有一个解决方法记录。
(gh-18658)
与dtype=...
比较的更改
当将比较 ufuncs(equal
、less
等)的dtype=
(或signature
)参数用于时,这将在将来表示所需的输出 dtype。这意味着:
np.equal(2, 3, dtype=object)
将在将来发出FutureWarning
,表示它将返回一个 object
数组,这目前发生在:
np.equal(None, None, dtype=object)
因为np.array(None)
已经是一个 object 数组。(对于一些其他 dtypes 也是一样。)
由于比较通常只返回布尔数组,在将来提供任何其他 dtype 将总是导致错误,并现在会发出 DeprecationWarning
。
(gh-18718)
ufuncs 中 dtype
和 signature
参数的更改
dtype
和 signature
这两个参数也适用于像 np.add.reduce
这样的缩减函数(它是 np.sum
的实现),现在当提供的dtype
不是“基本”dtype 时,会发出警告。
NumPy 几乎总是忽略这些输入的元数据、字节顺序或时间单位。现在 NumPy 将总是忽略并在字节顺序或时间单位发生变化时引发错误。以下是会导致错误的重要更改示例。在一些情况下,以前存储的信息不会被忽略,在所有这些情况下都会引发错误:
代码语言:javascript复制# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")
# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")
# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")
# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]") # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]") # Now returns "s" (from `arr`)
对于像np.sum
这样在内部使用这些的函数也是一样。这个变化是为了在 NumPy 中实现一致的处理。
如果你遇到了这些情况,在大多数情况下,例如传递dtype=np.timedelta64
,它清晰地表示一个没有任何单位或字节顺序定义的通用timedelta64
。如果需要精确指定输出 dtype,可以通过转换输入或使用out= 来提供输出数组。
NumPy 可能选择允许在未来在这里提供一个精确的输出dtype
,这将先发出 FutureWarning
。
(gh-18718)
Ufunc signature=...
和 dtype=
的泛化和转换
np.ufunc(1.0, 1.0, signature=...)
或 np.ufunc(1.0, 1.0, dtype=...)
的行为现在在 1.21 中可能与 1.20 中不同,因为有关提升的改变。当先前使用signature
时,输入的强制检查被放宽,这可能导致不安全的进行输入向下转换,尤其是当与casting="unsafe"
结合使用时。
现在保证转换是安全的。如果只提供了部分签名,例如使用signature=("float64", None, None)
,这可能导致找不到循环(错误)。在这种情况下,必须提供完整的签名来强制转换输入。如果使用dtype="float64"
或者仅设置输出(例如signature=(None, None, "float64")
)则不会改变。我们预计很少有用户会受到这种改变的影响。
此外,dtype="float64"
的含义已经稍有修改,现在严格地只强制执行正确的输出(而不是输入) DTypes。这意味着现在它总是等价于:
signature=(None, None, "float64")
(如果 ufunc 有两个输入和一个输出)。由于这可能导致在某些情况下找不到循环,因此 NumPy 通常也会搜索循环:
代码语言:javascript复制signature=("float64", "float64", "float64")
如果第一次搜索失败。将来,这个行为可能可以定制化,以实现对更复杂的通用函数的期望结果。(对于一些通用函数,比如np.ldexp
,输入可能具有不同的 DTypes。)
(gh-18880)
Distutils 在 clang 上强制使用严格浮点模型
当使用 clang 编译时,NumPy distutils 现在将始终添加-ffp-exception-behavior=strict
编译器标志。Clang 的默认版本是非严格版本,允许编译器生成不正确设置浮点警告/错误的代码。
(gh-19049)
通用函数中错误类型的更改
在某些情况下,通用函数可能会对无效输入引发不同的错误。主要的改变应该是将RuntimeError
替换为更合适的TypeError
。当在同一次调用中出现多个错误时,NumPy 现在可能会引发不同的错误。
(gh-15271)
__array_ufunc__
参数验证
NumPy 现在会在调用__array_ufunc__
之前部分验证参数。以前,当已知要进行分派时,可能传递无效的参数(例如不存在的关键字参数)。
(gh-15271)
__array_ufunc__
和额外的位置参数
以前,所有按位置传递的参数都会检查__array_ufunc__
的支持。对于reduce
、accumulate
和reduceat
,所有参数都可以按位置传递。这意味着当它们被按位置传递时,它们以前可能被要求通过__array_ufunc__
处理 ufunc 调用。由于这取决于参数是按位置还是按关键字传递的方式,NumPy 现在只会对输入和输出数组进行分派。例如,在像np.add.reduce
这样的缩减中,NumPy 永远不会对where
数组进行分派。
(gh-15271)
在Generator.uniform
中验证输入值
在np.random.Generator.uniform
中验证了high - low >= 0
。如果low > high
,则引发ValueError
。以前,接受了无序输入并进行了悄悄交换,所以如果low > high
,生成的值是high (low - high) * random()
。
(gh-17921)
默认包含路径中移除了/usr/include
使用numpy.distutils
构建包时,默认的包含路径不再包括/usr/include
。这个路径通常由编译器添加,硬编码它可能会有问题。如果这导致问题,请提出问题。在 PR 18658 中有一个解决方法。
(gh-18658)
对于dtype=...
的比较进行了更改
当用于比较 ufuncs(equal
, less
,等)的dtype=
(或signature
)参数时,这将在未来表示期望的输出 dtype。这意味着:
np.equal(2, 3, dtype=object)
在未来,将针对将要返回object
数组的情况发出FutureWarning
警告,目前已经发生在:
np.equal(None, None, dtype=object)
因为np.array(None)
已经是一个对象数组。(对于一些其他 dtype 也是如此)。
由于比较通常只返回布尔数组,未来提供任何其他 dtype 都会导致错误,并现在会发出DeprecationWarning
。
(gh-18718)
ufuncs 中dtype
和signature
参数的更改
通用函数参数dtype
和signature
,也适用于缩约,如np.add.reduce
(它是np.sum
的实现),当提供的dtype
不是“基本”dtype 时,现在会发出警告。
几乎总是忽略这些输入的元数据、字节顺序或时间单位。现在 NumPy 将始终忽略它,并在字节顺序或时间单位发生更改时引发错误。以下是可能导致错误的最重要的变化示例。在某些情况下,之前存储的信息未被忽略,在所有这些信息中现在都会引发错误:
代码语言:javascript复制# Previously ignored the byte-order (affect if non-native)
np.add(3, 5, dtype=">i32")
# The biggest impact is for timedelta or datetimes:
arr = np.arange(10, dtype="m8[s]")
# The examples always ignored the time unit "ns":
np.add(arr, arr, dtype="m8[ns]")
np.maximum.reduce(arr, dtype="m8[ns]")
# The following previously did use "ns" (as opposed to `arr.dtype`)
np.add(3, 5, dtype="m8[ns]") # Now return generic time units
np.maximum(arr, arr, dtype="m8[ns]") # Now returns "s" (from `arr`)
同样适用于像np.sum
这样在内部使用这些的函数。这种变化是为了在 NumPy 中实现一致的处理而必需的。
如果遇到这种情况,在大多数情况下,例如传递 dtype=np.timedelta64
,清楚指明一个没有定义单元或字节顺序的通用timedelta64
。如果需要精确指定输出 dtype,可以通过转换输入或使用*out=*提供输出数组来做到。
未来 NumPy 可能会选择在此提供确切的输出dtype
,这将先于FutureWarning
警告。
(gh-18718)
通用函数signature=...
和dtype=
的泛化以及casting
在 1.21 版本中,与 1.20 版本相比,对于np.ufunc(1.0, 1.0, signature=...)
或np.ufunc(1.0, 1.0, dtype=...)
可能产生不同的循环,因为提升发生了改变。之前使用signature
时,输入的强制转换检查会得到放松,这可能导致安全地向下转换输入,特别是与casting="unsafe"
一起使用时。
现在强制转换是安全的。如果仅部分提供了签名,例如使用signature=("float64",None,None)
,这可能导致找不到循环(错误)。在这种情况下,有必要提供完整的签名来强制转换输入。如果使用了dtype="float64"
或仅设置了输出(例如signature=(None,None,"float64")
),这是不变的。我们预计很少有用户会受到此更改的影响。
进一步,dtype="float64"
的含义已经稍微修改,现在严格执行正确的输出 DTypes。这意味着它现在总是等效于:
signature=(None, None, "float64")
(如果 ufunc 有两个输入和一个输出)。由于这在某些情况下可能导致找不到循环,NumPy 通常也会搜索循环:
代码语言:javascript复制signature=("float64", "float64", "float64")
如果第一次搜索失败。将来,可能会定制此行为以获得更复杂的 ufunc 的预期结果。(对于某些通用函数,例如 np.ldexp
,输入可以具有不同的数据类型。)
(gh-18880)
Distutils 强制在 clang 上使用严格的浮点模型
使用 clang 进行编译时,NumPy distutils 现在总会添加-ffp-exception-behavior=strict
编译器标志。Clang 默认使用非严格版本,允许编译器生成未正确设置浮点警告/错误的代码。
(gh-19049
C API 更改
使用 ufunc->type_resolver
和“类型元组”
NumPy 现在在调用类型解析器函数之前将“类型元组”参数标准化。请注意,在使用这种类型解析器的情况是遗留行为,如果可能,NumPy 将不这样做。强烈不建议调用ufunc->type_resolver
或PyUFunc_DefaultTypeResolver
,如果这样做将强制执行标准化的类型元组。请注意,这不影响提供类型解析器,它预期在大多数情况下仍能工作。如果您对调用类型解析器有意外用例,请通知 NumPy 开发人员,以便找到解决方案。
(gh-18718)
使用 ufunc->type_resolver
和“类型元组”
NumPy 现在在调用类型解析器函数之前将“类型元组”参数标准化。请注意,在使用这种类型解析器的情况是遗留行为,如果可能,NumPy 将不这样做。强烈不建议调用ufunc->type_resolver
或PyUFunc_DefaultTypeResolver
,如果这样做将强制执行标准化的类型元组。请注意,这不影响提供类型解析器,它预期在大多数情况下仍能工作。如果您对调用类型解析器有意外用例,请通知 NumPy 开发人员,以便找到解决方案。
(gh-18718)
新功能
添加了一个用于处理平台特定 numpy.number
精度的 mypy 插件
现在可以使用 mypy 插件自动分配某些number
子类的(平台相关)精度,包括int_
、intp
和longlong
等。请参阅标量类型部分的文档,以全面了解受影响的类。
注意,尽管使用插件是完全可选的,但如果不使用它,则上述类的精度将被推断为Any
。
要启用插件,必须将其添加到他们的 mypy 配置文件 中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-17843)
让 mypy 插件来管理扩展精度的 numpy.number
子类
在 numpy/numpy#17843 中引入的 mypy 插件已经扩展:该插件现在会删除特定平台上不可用的特定扩展精度类型的注释。例如,在不可用时,它将删除 float128
。
没有插件的话,就会在 mypy 看来,所有的扩展精度类型在所有平台上都是可用的。
要启用插件,必须将其添加到他们的 mypy 配置文件 中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-18322)
打印浮点数值的新 min_digits
参数
dragon4
和 format_float_scientific
浮点打印函数中添加了一个新的 min_digits
参数。该关键字参数保证在 unique=True 模式下打印时,至少会打印给定数量的数字,即使这些额外的数字在唯一指定值时是不必要的。它是设置要打印的最大数字数量的精度参数的对应物。在 fixed precision 模式下,当 unique=False 时,它没有效果,精度参数固定数字的数量。
(gh-18629)
f2py 现在能够识别 Fortran 的抽象接口块了
f2py
现在可以解析抽象接口块。
(gh-18695)
通过环境变量配置 BLAS 和 LAPACK。
通过使用 NPY_BLAS_LIBS
和 NPY_LAPACK_LIBS
环境变量可以绕过已安装的 BLAS 和 LAPACK 库的自动检测。而是直接使用这些环境变量中的链接标志,并且假定语言为 F77。这在已知精确安装了哪些 BLAS 和 LAPACK 的自动化构建中特别有用。一个用例是通过存根库链接在运行时替换实际实现。
如果设置了 NPY_CBLAS_LIBS
(作为 NPY_BLAS_LIBS
的可选项),这也将被使用,通过定义 HAVE_CBLAS
并将环境变量内容附加到链接标志中。
(gh-18737)
添加了对ndarray
的运行时可订阅别名
已经添加了numpy.typing.NDArray
,它是np.ndarray[Any, np.dtype[~Scalar]]
的运行时可订阅别名。这个新类型别名可以用于注释具有给定 dtype 和未指定形状的数组。 ¹
¹截至 1.21 版本,NumPy 不支持数组形状的注释,但预计将来会有所改变(参见PEP 646)。
示例
代码语言:javascript复制>>> import numpy as np
>>> import numpy.typing as npt
>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)
>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
... return np.array(a)
(gh-18935)
添加了处理平台特定的numpy.number
精度的 mypy 插件
现在提供了一个mypy插件,用于自动分配某些number
子类的(平台相关的)精度,包括int_
、intp
和longlong
等类型。请参阅标量类型文档,了解受影响的类的全面概述。
注意,虽然使用插件完全是可选的,但如果不使用插件,上述类的精度将被推断为Any
。
要启用插件,必须将其添加到 mypy 的配置文件中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-17843)
让 mypy 插件管理扩展精度numpy.number
子类
在 numpy/numpy#17843 中引入的mypy插件已经扩展:该插件现在会删除平台特定的扩展精度类型的注释,这些类型对于相关平台是不可用的。例如,当不可用时,它会删除float128
。
没有这个插件,mypy 认为所有扩展精度类型在所有平台上都可用。
要启用插件,必须将其添加到 mypy 的配置文件中:
代码语言:javascript复制[mypy]
plugins = numpy.typing.mypy_plugin
(gh-18322)
为打印浮点值添加了新的min_digits
参数
dragon4
浮点打印函数 format_float_positional
和 format_float_scientific
添加了一个新的 min_digits
参数。这个参数在 unique=True 模式下打印时保证至少打印给定数量的数字,即使额外的数字对于唯一指定值是不必要的。它是将最大打印位数设置为精度参数的对应项。在 unique=False 的固定精度模式下,它没有效果,精度参数固定位数。
(gh-18629)
f2py
现在可以识别 Fortran 抽象接口块
f2py
现在可以解析抽象接口块。
(gh-18695)
通过环境变量配置 BLAS 和 LAPACK
通过使用 NPY_BLAS_LIBS
和 NPY_LAPACK_LIBS
环境变量,可以绕过对已安装的 BLAS 和 LAPACK 库的自动检测。相反,这些环境变量中的链接标志将直接使用,并且语言被假定为 F77。这在已明确知道已安装的 BLAS 和 LAPACK 的自动化构建中特别有用。一个使用案例是通过 stub 库链接在运行时替换实际实现。
如果设置了 NPY_CBLAS_LIBS
(除了 NPY_BLAS_LIBS
),则也将使用它,通过定义 HAVE_CBLAS
并将环境变量内容追加到链接标志中。
(gh-18737)
添加了一个运行时子脚本别名用于 ndarray
numpy.typing.NDArray
已添加,是 np.ndarray[Any, np.dtype[~Scalar]]
的运行时子脚本别名。可以使用这个新的类型别名为具有给定数据类型和未指定形状的数组进行注释。 ¹
¹ 目前,NumPy 不支持对数组形状进行标注(截至 1.21 版本),但预计将来会改变(参见PEP 646)。
示例
代码语言:javascript复制>>> import numpy as np
>>> import numpy.typing as npt
>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)
>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
... return np.array(a)
(gh-18935)
示例
代码语言:javascript复制>>> import numpy as np
>>> import numpy.typing as npt
>>> print(npt.NDArray)
numpy.ndarray[typing.Any, numpy.dtype[~ScalarType]]
>>> print(npt.NDArray[np.float64])
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
>>> NDArrayInt = npt.NDArray[np.int_]
>>> a: NDArrayInt = np.arange(10)
>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]:
... return np.array(a)
(gh-18935)
改进
numpy.unwrap
的任意 period
选项
解包相位的区间大小不再限制为 2 * pi
。这对于解包度数特别有用,但也可以用于其他区间。
>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180.])
>>> unwrap(phase_deg, period=360)
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
180., 220., 260., 300., 340., 380., 420., 460., 500.,
540.])
(gh-16987)
np.unique
现在只返回单个 NaN
当 np.unique
在具有多个 NaN
条目的数组上操作时,其返回值会为原始数组中每个 NaN
条目包含一个 NaN
。现在已经改进,返回的数组仅包含最后一个 NaN
。
对于复数数组,所有的 NaN
值都被视为等价(无论 NaN
是否在实部或虚部)。作为返回数组的代表,按字典顺序选择最小的一个 - 有关复数数组的字典顺序如何定义,请参见 np.sort
。
(gh-18070)
Generator.rayleigh
和 Generator.geometric
的性能提高了
Generator
中的 Rayleigh 和几何随机变量生成的性能已经提高。这两者都是指数随机变量的转换,而慢速基于对数的逆 cdf 转换已被基于 Ziggurat 的指数变量生成器替换。
这一变化破坏了从这些分布中生成的变量流。
(gh-18666)
占位符注释已经改进
所有先前标注为 typing.Any
的占位符注释都已经改进。在适当的情况下,它们已被明确的函数定义、类或其他杂项对象替换。
(gh-18934)
numpy.unwrap
的任意 period
选项
相位展开的间隔大小不再限制为 2 * pi
。这对于展开度数特别有用,但也可用于其他间隔。
>>> phase_deg = np.mod(np.linspace(0,720,19), 360) - 180
>>> phase_deg
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180., -140., -100., -60., -20., 20., 60., 100., 140.,
-180.])
>>> unwrap(phase_deg, period=360)
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
180., 220., 260., 300., 340., 380., 420., 460., 500.,
540.])
(gh-16987)
np.unique
现在返回单个 NaN
当 np.unique
在具有多个 NaN
条目的数组上操作时,其返回包括原始数组中每个 NaN
条目的 NaN
。现在改进为返回的数组只包含一个 NaN
,作为最后一个元素。
对于复数数组,所有的 NaN
值都被视为等价(无论 NaN
是否在实部或虚部)。作为返回数组的代表,按字典顺序选择最小的一个 - 有关复数数组的字典顺序如何定义,请参见 np.sort
。
(gh-18070)
Generator.rayleigh
和 Generator.geometric
的性能提高了
Generator
中的 Rayleigh 和几何随机变量生成的性能已经提高。这两者都是指数随机变量的转换,而慢速基于对数的逆 cdf 转换已被基于 Ziggurat 的指数变量生成器替换。
这一变化破坏了从这些分布中生成的变量流。
(gh-18666)
占位符注释已经改进
所有先前标注为 typing.Any
的占位符注释都已经改进。在适当的情况下,它们已被明确的函数定义、类或其他杂项对象替换。
(gh-18934)
性能改进
改进了 NumPy 数组的整数除法性能
NumPy 数组的整数除法现在在除数为常数时使用libdivide。使用 libdivide 和其他次要优化,速度大大提高。//
操作符和np.floor_divide
也使用了新的改动。
(gh-17727)
改进了对小数组的np.save
和np.load
的性能
小数组的np.save
现在也快了很多。
np.load
在对版本 >=(3, 0)
进行序列化时也更快了。
两者都是通过删除仅适用于 Python 2 的检查来完成的,同时仍与可能由 Python 2 创建的数组保持兼容。
(gh-18657)
改进了 NumPy 数组的整数除法性能
NumPy 数组的整数除法现在在除数为常数时使用libdivide。使用 libdivide 和其他次要优化,速度大大提高。//
操作符和np.floor_divide
也使用了新的改动。
(gh-17727)
改进了小数组的np.save
和np.load
的性能
小数组的np.save
现在也快了很多。
np.load
在对版本 >=(3, 0)
进行序列化时也更快了。
两者都是通过删除仅适用于 Python 2 的检查来完成的,同时仍与可能由 Python 2 创建的数组保持兼容。
(gh-18657)
更改
numpy.piecewise
的输出类现在与输入类匹配。
当ndarray
子类用作piecewise
的输入时,它们也会传递给函数。输出现在也将是相同的子类。
(gh-18110)
启用加速框架
随着 macOS 11.3 的发布,使用加速框架的 BLAS 和 LAPACK 实现时 NumPy 遇到的几个不同问题应该得到解决。此更改在 macOS 上启用了加速框架作为选项。如果发现其他问题,请使用开发人员反馈助手工具(developer.apple.com/bug-reporting/
)向加速框架提交 Bug 报告。我们打算及时解决问题,并计划继续支持和更新我们的 BLAS 和 LAPACK 库。
(gh-18874)
numpy.piecewise
的输出类现在与输入类匹配。
当ndarray
子类用于输入到piecewise
时,它们将被传递到这些函数。现在输出将与输入相同的子类。
(gh-18110)
启用加速框架
随着 macOS 11.3 的发布,numpy 在使用加速框架的 BLAS 和 LAPACK 实现时遇到的多种问题应该得到解决。此更改在 macOS 上启用了加速框架作为一个选项。如果发现其他问题,请使用开发者反馈助手工具(developer.apple.com/bug-reporting/
)提交 bug 报告给加速框架。我们打算及时解决问题,并计划继续支持和更新我们的 BLAS 和 LAPACK 库。
(gh-18874)
NumPy 1.20.3 版本说明
Anne Archibald
#18768:BLD:在 MacOS 上转储 gfortran 版本时去掉额外的换行符
贡献者
总共有 7 人为本版本做出了贡献。名字后面带有“ ”符号的人是第一次为此贡献补丁。
- Anne Archibald
- #18923:BLD:在 macOS 上删除不必要的标志
-faltivec
- Charles Harris
- #18769:BUG:修复对象/longdouble 操作中的段错误
- Dong Keun Oh
- Sayed Adel
- Sebastian Berg
已合并的拉取请求
本篇文档原文:numpy.org/doc/1.26/release/1.20.3-notes.html
- #18763:BUG:修正了
datetime64
缺失的datetime.date
类型重载… - #18764:MAINT:移除
__all__
,使用显式重新导出 - Kamil Choudhury
- 贡献者
- #18794:MAINT:明确使用 towncrier 构建
- #18887:MAINT:放宽某些整数类型的约束
- #18915:MAINT:从返回注释中移除不安全的联合和 ABC
- #18921:MAINT:允许更多的标量测试递归深度。
- #18922:BUG:在发生错误的情况下初始化完整的 nditer 缓冲区
- 完。
- #18924:MAINT,CI:将 _SIMD 模块构建警告视为错误通过…
- #18925:BUG:对于 MINGW,需要 GLIBC > 2.12 的 threads.h 存在检测
- #18941:BUG:使变更日志识别 gh-作为 PR 号前缀。
- #18948:REL,DOC:为 NumPy 1.20.3 版本做准备。
- #18953:BUG:修复 1.20.x 中 mypy 测试失败。
Dong Keun Oh
共有 7 人为本版本做出了贡献。名字后面带有“ ”符号的人是第一次为此贡献补丁。
- Kamil Choudhury
- Bas van Beek
- Charles Harris
- NumPy 1.20.3 版是在 NumPy 1.20.2 版本发布后,合并到主分支的几个修复的 bugfix 版本。
- Bas van Beek
- Sayed Adel
- Sebastian Berg
已合并的拉取请求
总共有 15 个拉取请求被合并到本版本中。
- #18763:BUG:修正了
datetime64
缺失的datetime.date
类型重载… - #18764:MAINT:移除
__all__
,使用显式重新导出 - #18768:BLD:在 MacOS 上转储 gfortran 版本时去掉额外的换行符
- #18769:BUG:修复对象/longdouble 操作中的段错误
- #18794:MAINT:明确使用 towncrier 构建。
- #18887:MAINT:放宽某些整数类型约束。
- #18915:MAINT:从返回注释中删除不安全的联合体和 ABCs。
- #18921:MAINT:允许更多的标量测试递归深度。
- #18922:BUG:在出错情况下初始化完整的 nditer 缓冲区。
- #18923:BLD:在 macOS 上删除不必要的标志
-faltivec
。 - #18924:MAINT,CI:通过…将 _SIMD 模块构建警告视为错误。
- #18925:BUG:对于 MINGW,threads.h 的存在测试需要 GLIBC > 2.12。
- #18941:BUG:使变更日志识别 gh-作为 PR 号前缀。
- #18948:REL,DOC:准备 NumPy 1.20.3 版本的发布。
- #18953:BUG:修复 1.20.x 中失败的 mypy 测试。
NumPy 1.20.2 发布说明
原文:
numpy.org/doc/1.26/release/1.20.2-notes.html
NumPy 1.20.2 是一个修复 bug 的版本,包含在 NumPy 1.20.1 发布之后合并到主分支的几个修复。
贡献者
总共有 7 人参与了这次发布。在其名字后面有“ ”号的人第一次贡献了补丁。
- Allan Haldane
- Bas van Beek
- Charles Harris
- Christoph Gohlke
- Mateusz Sokół
- Michael Lamparski
- Sebastian Berg
合并的拉取请求
总共有 20 个拉取请求合并到此次发布。
- #18382:MAINT:从主分支更新 f2py。
- #18459:BUG:
diagflat
在 Windows 或 32 位平台可能溢出 - #18460:BUG:修复 f2py
complex_double_from_pyobj
中的引用计数泄漏。 - #18461:BUG:当使用
like=
覆盖时修复小的内存泄漏 - #18462:BUG:移除 VOID 函数中的描述符/标志的临时更改
- #18469:BUG:Object 数组的 nditer 缓冲区 dealloc 中出现段错误
- #18485:BUG:移除可疑的类型转换
- #18486:BUG:移除无意义的指针比较
- #18487:BUG:在使用之前验证指针是否为空
- #18488:BUG:检查 PyArray_malloc 是否成功
- #18546:BUG:nditer 中出现错误的错误路径
- #18559:CI:从主分支回溯 CI 修复。
- #18599:MAINT:为
dtype.__getitem__
、__mul__
和…添加注释 - #18611:BUG:在 numpy.distutils.fcompiler.compaq 中出现 NameError 错误
- #18612:BUG:修复
np.mean
和np.var
方法的where
关键字 - #18617:CI:Python 安装前更新 apt 软件包列表
- #18636:MAINT:确保重新导出的子模块正确标注
- #18638:BUG:修复 ma 强制类型转换为列表的问题,如果它们不能转换为…
- #18661:BUG:修复 valgrind 发现的小问题
- #18671:BUG:修复 pytest-leaks 发现的小问题
贡献者
总共有 7 人参与了这次发布。在其名字后面有“ ”号的人第一次贡献了补丁。
- Allan Haldane
- Bas van Beek
- Charles Harris
- Christoph Gohlke
- Mateusz Sokół
- Michael Lamparski
- Sebastian Berg
合并的拉取请求
总共有 20 个拉取请求合并到此次发布。
- #18382: MAINT: 从 master 更新 f2py。
- #18459: BUG:
diagflat
在 Windows 或 32 位平台上可能溢出 - #18460: BUG: 修复 f2py
complex_double_from_pyobj
中的引用计数泄漏。 - #18461: BUG: 修复
like=
重写时的微小内存泄漏 - #18462: BUG: 移除 VOID 函数中 descr/flags 的临时更改
- #18469: BUG: 对于 Object 数组,在 nditer 缓冲区 dealloc 时发生段错误
- #18485: BUG: 移除可疑类型转换
- #18486: BUG: 移除无意义的指针比较小于 0
- #18487: BUG: 在使用指针之前验证指针是否为空
- #18488: BUG: 检查 PyArray_malloc 是否成功
- #18546: BUG: nditer 中错误的错误传递
- #18559: CI: 从主版本中回退 CI 修复。
- #18599: MAINT: 为
dtype.__getitem__
, *mul*和…添加注释 - #18611: BUG: numpy.distutils.fcompiler.compaq 中的 NameError
- #18612: BUG: 修复
np.mean
和np.var
方法中where
关键字 - #18617: CI: Python 安装前更新 apt 软件包列表
- #18636: MAINT: 确保重新导出的子模块被正确注释
- #18638: BUG: 修复 ma coercion list-of-ma-arrays if they do not cast to…
- #18661: BUG: 修复 valgrind 发现的小问题
- #18671: BUG: 修复 pytest-leaks 发现的小问题
NumPy 1.20.1 发布说明
原文:
numpy.org/doc/1.26/release/1.20.1-notes.html
NumPy 1.20.1 是一个快速的 bug 修复版本,修复了 1.20.0 发布后报告的几个错误和回归。
亮点
- 修复了导致下游项目出现问题的 distutils bug。
-
random.shuffle
回归了。
贡献者
这个版本的发布共有 8 人做出了贡献。名字旁边带有“ ”符号的人第一次为该版本贡献了补丁。
- Bas van Beek
- 查尔斯·哈里斯
- 尼古拉斯·麦克布恩
- 佩鲁·彼得森
- 拉尔夫·戈默斯
- 塞巴斯蒂安·贝格
- 泰勒·雷迪
- @Aerysv
合并的拉取请求
这个版本共有 15 个拉取请求合并。
- #18306:维护:添加遗漏的占位符注释
- #18310:BUG:修复
numpy.__init__.py
中的拼写错误 - #18326:BUG:在遍历过程中不要改变假库列表…
- #18327:维护:优雅地洗牌 memoryviews
- #18328:BUG:使用 C 链接来在随机分布中
- #18336:CI:修复 GitHub Actions 构建触发时的问题,并允许 ci 跳过
- #18337:BUG:允许 timedelta 与 isclose、allclose、等等不做修改的使用
- #18345:BUG:允许对所有相关的 DType 类型/类进行 pickling
- #18351:BUG:修复缺少的 signed_char 依赖。关闭 #18335。
- #18352:DOC:更改许可证日期 2020 -> 2021
- #18353:CI:CircleCI 似乎偶尔超时,增加限制
- #18354:BUG:修复包装 F90 子例程时的 f2py bug。
- #18356:维护:crackfortran 正则表达式简化
- #18357:BUG:threads.h 存在性测试需要 GLIBC > 2.12。
- #18359:REL:为 NumPy 1.20.1 版本做准备。
亮点
- 修复了导致下游项目出现问题的 distutils bug。
-
random.shuffle
回归了。
贡献者
这个版本的发布共有 8 人做出了贡献。名字旁边带有“ ”符号的人第一次为该版本贡献了补丁。
- Bas van Beek
- 查尔斯·哈里斯
- 尼古拉斯·麦克布恩
- 佩鲁·彼得森
- 拉尔夫·戈默斯
- 塞巴斯蒂安·贝格
- 泰勒·雷迪
- @Aerysv
合并的拉取请求
这个版本共有 15 个拉取请求合并。
- #18306:维护:添加遗漏的占位符注释
- #18310:BUG:修复
numpy.__init__.py
中的拼写错误 - #18326:BUG:不要在遍历过程中改变假库列表…
- #18327: MAINT: 优雅地洗牌 memoryviews
- #18328: BUG: 为随机分布使用 C 语言链接
- #18336: CI: 修复 GitHub Actions 构建触发时的问题,并允许跳过 CI
- #18337: BUG: 允许使用 isclose、allclose 等与 timedelta 未修改的用法
- #18345: BUG: 允许对所有相关的 DType 类型/类进行 pickle
- #18351: BUG: 修复缺少的 signed_char 依赖项。关闭 #18335。
- #18352: DOC: 将许可证日期从 2020 改为 2021
- #18353: CI: CircleCI 似乎偶尔超时,请增加限制
- #18354: BUG: 修复包装 F90 子程序时的 f2py 错误。
- #18356: MAINT: 简化 crackfortran 正则表达式
- #18357: BUG: threads.h 存在测试要求 GLIBC > 2.12。
- #18359: REL: 为 NumPy 1.20.1 版本做好准备。