NumPy 1.26 中文文档(五十九)

2024-07-26 10:01:29 浏览数 (1)

原文:numpy.org/doc/

NumPy 1.19.5 发布说明

原文:numpy.org/doc/1.26/release/1.19.5-notes.html

NumPy 1.19.5 是一个小的 bug 修复版本。除了修复了一些错误外,主要的改进是更新到了 OpenBLAS 0.3.13,在不中断其他平台执行的同时解决了 Windows 2004bug。此版本支持 Python 3.6-3.9,并计划是 1.19.x 循环中的最后一个版本。

贡献者

总共有 8 个人为此次发布做出了贡献。名字中带有“ ”的人第一次为该补丁做出贡献。

  • Charles Harris
  • Christoph Gohlke
  • Matti Picus
  • Raghuveer Devulapalli
  • Sebastian Berg
  • Simon Graham
  • Veniamin Petrenko
  • Bernie Gray

合并的拉取请求

本次发布合并了 11 个拉取请求。

  • #17756: BUG: 修复由于 floatstatus 超出界限指针而导致的 segfault…
  • #17774: BUG: 修复 np.timedelta64(‘nat’).format 引发异常的问题
  • #17775: BUG: 修复 array_tofile 中的文件句柄泄漏。
  • #17786: BUG: 在维度发现过程中引发递归错误
  • #17917: BUG: 修复在 fromfile 中使用过大计数的子数组数据类型
  • #17918: BUG: ‘bool’对象没有‘ndim’属性
  • #17919: BUG: 确保 _UFuncNoLoopError 可以被 pickled
  • #17924: BLD: 在 OpenBLAS 中使用 BUFFERSIZE=20
  • #18026: BLD: 更新至 OpenBLAS 0.3.13
  • #18036: BUG: 使变量易失性以解决 clang 编译器的错误
  • #18114: REL: 为 NumPy 1.19.5 版本做准备。

贡献者

总共有 8 个人为此次发布做出了贡献。名字中带有“ ”的人第一次为该补丁做出贡献。

  • Charles Harris
  • Christoph Gohlke
  • Matti Picus
  • Raghuveer Devulapalli
  • Sebastian Berg
  • Simon Graham
  • Veniamin Petrenko
  • Bernie Gray

合并的拉取请求

本次发布合并了 11 个拉取请求。

  • #17756: BUG: 修复由于 floatstatus 超出界限指针而导致的 segfault…
  • #17774: BUG: 修复 np.timedelta64(‘nat’).format 引发异常的问题
  • #17775: BUG: 修复 array_tofile 中的文件句柄泄漏。
  • #17786: BUG: 在维度发现过程中引发递归错误
  • #17917: BUG: 修复在 fromfile 中使用过大计数的子数组数据类型
  • #17918: BUG: ‘bool’对象没有‘ndim’属性
  • #17919: BUG: 确保 _UFuncNoLoopError 可以被 pickle 化
  • #17924: BLD: 在 OpenBLAS 中使用 BUFFERSIZE=20
  • #18026: BLD: 更新至 OpenBLAS 0.3.13
  • #18036: BUG: 使一个变量成为 volatile 以解决 clang 编译器的一个 bug
  • #18114: REL: 为 NumPy 1.19.5 版本做准备。

NumPy 1.19.4 发布说明

原文:numpy.org/doc/1.26/release/1.19.4-notes.html

NumPy 1.19.4 是一个快速发布版本,用于还原 OpenBLAS 库的版本。希望在 1.19.3 中使用的 0.3.12 OpenBLAS 版本能解决 Microsoft fmod bug 的问题,但在某些 Docker 环境中出现了问题。相反,1.19.4 将使用旧库并在导入时运行健全性检查,如果检测到问题,将引发错误。Microsoft 已意识到了这个问题,并承诺在修复后,用户应升级。

此版本支持 Python 3.6-3.9

贡献者

共有 1 人贡献了此版本。有人名字旁有“ ”符号的为首次贡献补丁的人。

  • 查尔斯·哈里斯

已合并的拉取请求

共有 2 个拉取请求已合并到此版本。

  • #17679: 维护:添加针对 Windows 10 版本 2004 漏洞的检查。
  • #17680: 修订:为 1.19.4 版本恢复 OpenBLAS 到 1.19.2 版本

贡献者

共有 1 人贡献了此版本。有人名字旁有“ ”符号的为首次贡献补丁的人。

  • 查尔斯·哈里斯

已合并的拉取请求

共有 2 个拉取请求已合并到此版本。

  • #17679: 维护:添加针对 Windows 10 版本 2004 漏洞的检查。
  • #17680: 修订:为 1.19.4 版本恢复 OpenBLAS 到 1.19.2 版本

NumPy 1.19.3 发布说明

原文:numpy.org/doc/1.26/release/1.19.3-notes.html

NumPy 1.19.3 是一个小型维护版本,有两个主要改进:

  • 所有受支持平台上的 Python 3.9 二进制轮子。
  • 针对 Windows 10 2004 版本 fmod bug 的 OpenBLAS 修复。

这个版本支持 Python 3.6-3.9,并且链接了 OpenBLAS 0.3.12 以避免在 Windows 10 2004 版本上的一些 fmod 问题。微软已经意识到了这个问题,用户应该在修复可用时升级,这里的修复范围有限。

贡献者

这个版本共有 8 人为其做出了贡献。名字后带“ ”符号的人员是首次贡献补丁的。

  • Charles Harris
  • Chris Brown
  • Daniel Vanzo
    1. Madison Bray
  • Hugo van Kemenade
  • Ralf Gommers
  • Sebastian Berg
  • @danbeibei

合并的拉取请求

这个版本共合并了 10 个拉取请求。

  • #17298: 构建: 为构建依赖设置上限版本
  • #17336: 修复: 在 PyArray_InitArrFuncs 中将已弃用字段设为 null
  • #17446: 增强: 警告不支持的 Python 3.10
  • #17450: 维护: 更新 test_requirements.txt。
  • #17522: 增强: 支持 NVIDIA HPC SDK nvfortran 编译器
  • #17568: 修复: 受影响平台上的 Cygwin 对 #14787 的回避方法
  • #17647: 修复: 由于放宽步幅导致的缓冲区信息缓存内存泄漏
  • #17652: 维护: 从主分支回溯 openblas_support。
  • #17653: 测试: 在 Windows、Mac 上将 Python 3.9 添加到 CI 测试。
  • #17660: 测试: 简化 test_extending 中的源路径名称。

贡献者

这个版本共有 8 人为其做出了贡献。名字后带“ ”符号的人员是首次贡献补丁的。

  • Charles Harris
  • Chris Brown
  • Daniel Vanzo
    1. Madison Bray
  • Hugo van Kemenade
  • Ralf Gommers
  • Sebastian Berg
  • @danbeibei

合并的拉取请求

这个版本共合并了 10 个拉取请求。

  • #17298: 构建: 为构建依赖设置上限版本
  • #17336: 修复: 在 PyArray_InitArrFuncs 中将已弃用字段设为 null
  • #17446: 增强: 警告不支持的 Python 3.10
  • #17450: 维护: 更新 test_requirements.txt。
  • #17522: 增强: 支持 NVIDIA HPC SDK nvfortran 编译器
  • #17568: 修复: 受影响平台上的 Cygwin 对 #14787 的回避方法
  • #17647: BUG: 修复因放松步幅而导致的缓冲区信息缓存内存泄漏。
  • #17652: MAINT: 从主分支中回溯 openblas_support。
  • #17653: TST: 在 Windows、Mac 上的 CI 测试中添加 Python 3.9。
  • #17660: TST: 简化 test_extending 中的源路径名称。

NumPy 1.19.2 发布说明

原文:numpy.org/doc/1.26/release/1.19.2-notes.html

NumPy 1.19.2 修复了几个 bug,为即将到来的 Cython 3.x 版本做准备,并固定 setuptools,以便在上游修改正在进行时仍让 distutils 工作。aarch64 轮子是使用最新的 manylinux2014 发行版构建的,解决了不同 Linux 发行版使用不同页面大小的问题。

本发布版支持 Python 3.6-3.8。在使用 Python 3.9 进行测试时,需要使用 Cython >= 0.29.21。

我们正在努力排查 Windows 10 版本=2004 和 OpenBLAS svd 存在的已知问题。如果你使用的是该版本的 Windows,你应该使用链接到 MKL 库的 NumPy 版本,较早版本的 Windows 则没有问题。

改进

为 Cython 3.0 及更高版本添加 NumPy 声明

改进了 Cython 3.0 版本的 pxd 声明,避免使用已弃用的 NumPy C-API 特性。现在,使用 NumPy 的 Cython 3.0 构建的扩展模块可以设置 C 宏 NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,避免 C 编译器对已弃用 API 用法的警告。

贡献者

本发布版共有 8 位贡献者。名字后面带有“ ”的人首次贡献了一个补丁。

  • Charles Harris
  • Matti Picus
  • Pauli Virtanen
  • Philippe Ombredanne
  • Sebastian Berg
  • Stefan Behnel
  • Stephan Loyd
  • Zac Hatfield-Dodds

已合并的拉取请求

本发布版共合并了 9 个拉取请求。

  • #16959: 测试: 在 travis.yml 中将 aarch64 改为 arm64
  • #16998: 维护: 为 np.test() 配置假设以确保确定性,…
  • #17000: 构建: pin setuptools < 49.2.0
  • #17015: 增强: 为 Cython 3.0 添加可用的 NumPy 声明
  • #17125: BUG: 修复 fft 计算中非线程安全的 sigint 处理
  • #17243: BUG: core: 修复 ilp64 blas dot/vdot/… 在 strides > int32 max 时的问题
  • #17244: 文档: 使用正确的许可证的 SPDX 许可证表达式
  • #17245: 文档: 修复旧 API 函数中对快速入门的链接
  • #17272: BUG: 修复大于 2GiB 的数组的 pickle

改进

为 Cython 3.0 及更高版本添加 NumPy 声明

改进了 Cython 3.0 版本的 pxd 声明,避免使用已弃用的 NumPy C-API 特性。现在,使用 NumPy 的 Cython 3.0 构建的扩展模块可以设置 C 宏 NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,避免 C 编译器对已弃用 API 用法的警告。

为 Cython 3.0 及更高版本添加 NumPy 声明

为了避免使用已弃用的 NumPy C-API 特性,Cython 3.0 的 pxd 声明得到了改进。现在,使用 Cython 3.0 构建的扩展模块可以设置 C 宏NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,以避免关于使用已弃用 API 的 C 编译器警告。

贡献者

总共有 8 个人为此版本做出了贡献。在其名字后带有“ ”的人第一次为补丁做出了贡献。

  • Charles Harris
  • Matti Picus
  • Pauli Virtanen
  • Philippe Ombredanne
  • Sebastian Berg
  • Stefan Behnel
  • Stephan Loyd
  • Zac Hatfield-Dodds

合并的拉取请求

总共有 9 个拉取请求被合并到此版本。

  • #16959: 测试:在 travis.yml 中将 aarch64 更改为 arm64。
  • #16998: 维护:在np.test()中配置假设(hypothesis)以实现确定性,…
  • #17000: 构建:设置 setuptools<49.2.0 的版本
  • #17015: 增强:为 Cython 3.0 添加 NumPy 声明
  • #17125: 错误修复:从 fft 计算中删除不线程安全的 sigint 处理
  • #17243: 错误修复:核心:修复 strides > int32 max 时的 ilp64 blas dot/vdot/…
  • #17244: 文档:使用正确的许可 SPDX 许可表达式
  • #17245: 文档:修复旧 API 函数中快速启动的链接
  • #17272: 错误修复:修复大于 2GiB 的数组的 pickling

NumPy 1.19.1 发布说明

译文:numpy.org/doc/1.26/release/1.19.1-notes.html

NumPy 1.19.1 修复了 1.19.0 发布中发现的几个 bug,替换了即将在 Python 3.9 发布中弃用的几个函数,改进了对 AIX 的支持,并做了一些开发相关的更新以维持与最近上游更改的持续集成(CI)的工作。

本次发布支持 Python 3.6-3.8。测试时需要使用 Python 3.9 构建时需使用 Cython >= 0.29.21。

Contributors

本次发布有 15 人做出了贡献。其中名字后面带有“ ”的是首次贡献补丁的人。

  • Abhinav Reddy
  • Anirudh Subramanian
  • Antonio Larrosa
  • Charles Harris
  • Chunlin Fang
  • Eric Wieser
  • Etienne Guesnet
  • Kevin Sheppard
  • Matti Picus
  • Raghuveer Devulapalli
  • Roman Yurchak
  • Ross Barnowski
  • Sayed Adel
  • Sebastian Berg
  • Tyler Reddy

合并的拉取请求

本次发布合并了共计 25 个拉取请求。

  • #16649: MAINT, CI: 禁用 Shippable cache
  • #16652: MAINT: 用 PyUnicode_GetLength 替换 PyUString_GET_SIZE
  • #16654: REL: 修复过时的文档链接
  • #16656: BUG: 在 AIX 上引发 IEEE 异常
  • #16672: BUG: 修复处理数组时 AVX 复数绝对值中的 bug
  • #16693: TST: 在 CPU 功能检测中添加额外的调试信息
  • #16703: BLD: 为 Emscripten / WebAssembly 添加 CPU 条目
  • #16705: TST: 禁用 Python 3.9-dev 测试。
  • #16714: MAINT: 在 ValueError 情况下禁用 use_hugepages
  • #16724: BUG: 修复 PyArray_SearchSorted 的签名。
  • #16768: MAINT: 修复 scalartypes.c.src 中的弃用函数
  • #16772: MAINT: 移除不必要的对 PyUnicode_READY 的调用
  • #16776: MAINT: 修复 scalarapi.c 中的弃用函数
  • #16779: BLD, ENH: 为 AIX 添加 RPATH 支持
  • #16780: BUG: 修复 genfromtxt 中的默认回退
  • #16784: BUG: 在 methods.c 中引发错误后添加了丢失的返回
  • #16795: BLD: 更新 cython 至 0.29.21
  • #16832: MAINT: setuptools 49.2.0 产生警告,避免它
  • #16872: BUG: 验证二项式和多项式输出大小
  • #16875: BLD, MAINT: 固定 setuptools 版本
  • #16904: DOC:重构测试指南。
  • #16905: TST, BUG:在 test_large_zip 中重新引发 MemoryError 异常的例外
  • #16906: BUG,DOC:修复错误的 MPL 参数。
  • #16916: BUG:修复字符串/字节到复数赋值
  • #16922: REL:准备 NumPy 1.19.1 版本发布

贡献者

本次发布共有 15 人做出贡献。名字后面有“ ”的人第一次为此发布贡献了补丁。

  • Abhinav Reddy
  • Anirudh Subramanian
  • Antonio Larrosa
  • Charles Harris
  • Chunlin Fang
  • Eric Wieser
  • Etienne Guesnet
  • Kevin Sheppard
  • Matti Picus
  • Raghuveer Devulapalli
  • Roman Yurchak
  • Ross Barnowski
  • Sayed Adel
  • Sebastian Berg
  • Tyler Reddy

已合并的拉取请求

本次发布共合并了 25 个拉取请求。

  • #16649: MAINT, CI:禁用 Shippable 缓存
  • #16652: MAINT:用PyUnicode_GetLength代替PyUString_GET_SIZE
  • #16654: REL:修复过时的文档链接
  • #16656: BUG:在 AIX 上引发 IEEE 异常
  • #16672: BUG:在处理数组时修复 AVX 复数绝对值中的错误…
  • #16693: TST:在 CPU 特性检测中添加额外的调试信息
  • #16703: BLD:为 Emscripten/WebAssembly 添加 CPU 输入
  • #16705: TST:禁用 Python 3.9-dev 测试。
  • #16714: MAINT:在出现 ValueError 情况下禁用 use_hugepages
  • #16724: BUG:修复 PyArray_SearchSorted 签名。
  • #16768: MAINT:在 scalartypes.c.src 中修复了已弃用函数
  • #16772: MAINT:删除不需要的 PyUnicode_READY 调用
  • #16776: MAINT:在 scalarapi.c 中修复已弃用的函数
  • #16779: BLD, ENH:为 AIX 添加 RPATH 支持
  • #16780: BUG:修复 genfromtxt 中默认的回退
  • #16784: BUG:在 methods.c 中引发错误后添加丢失的返回
  • #16795: BLD:更新 cython 至 0.29.21
  • #16832: MAINT:setuptools 49.2.0 发出警告,避免它
  • #16872: BUG:验证二项式和多项式输出大小
  • #16875: BLD, MAINT:固定 setuptools 版本
  • #16904: DOC:重构测试指南。
  • #16905: TST, BUG: 在 test_large_zip 中重新引发 MemoryError 异常…
  • #16906: BUG,DOC: 修复坏的 MPL kwarg.
  • #16916: BUG: 修复字符串/字节到复数的赋值
  • #16922: REL: 为准备 NumPy 1.19.1 版本发布做准备

NumPy 1.19.0 发布说明

原文:numpy.org/doc/1.26/release/1.19.0-notes.html

这个 NumPy 版本以大量技术债务的清除为标志:不再支持 Python 2,许多弃用的功能已经过期,并且文档得到了改进。 对随机模块的优化持续进行中,包括来自 Cython 的错误修复和更好的可用性。

本版本支持的 Python 版本为 3.6-3.8。 下游开发人员应该使用 Cython >= 0.29.16 来支持 Python 3.8,并且在 Skylake 架构上避免使用 OpenBLAS >= 3.7 出现问题。

亮点

  • 代码与 Python 版本 < 3.6(包括 Python 2)的兼容性已从 python 和 C 代码中删除。 numpy.compat中的兼容层将继续支持第三方包,但可能会在将来的版本中被弃用。 请注意,由于使用了 f-strings,1.19.x 不会与早期版本的 Python 编译。 (gh-15233)

弃用已过期

numpy.insertnumpy.delete 在 0d 数组上不能再传递 axis。

这标志着从 1.9 开始的弃用,当axis参数传递给 0d 数组的~numpy.insert~numpy.delete调用时,axisobj参数以及索引将被完全忽略。 在这些情况下,insert(arr, "nonsense", 42, axis=0)实际上会覆盖整个数组,而delete(arr, "nonsense", axis=0)将是arr.copy()

现在在 0d 数组上传递axis会引发~numpy.AxisError

(gh-15802)

numpy.delete 不再忽略超出范围的索引

这标志着从 1.8 和 1.9 开始的弃用,其中 np.delete 将忽略负数和超出范围的索引。 这与将单个索引传递时的行为相矛盾。

现在超出范围的项会抛出 IndexError,负数项从末尾索引。

(gh-15804)

numpy.insertnumpy.delete 不再接受非整数索引

这结束了从 1.9 开始的弃用,允许非整数索引序列并将其转换为整数。 现在传递非整数索引的序列会引发 IndexError,就像传递单个非整数标量时一样。

(gh-15805)

numpy.delete不再将布尔索引转换为整数

这结束了从 1.8 开始的弃用,np.delete 将布尔数组和标量转换为整数索引。 现在的行为是将布尔数组视为掩码,并在布尔标量上引发错误。

(gh-15815)

兼容性说明

numpy.random.Generator.dirichlet更改随机变量流

通过在max(alpha) < 0.1时使用不同的算法,修复了对 Dirichlet 分布的小“alpha”值的随机变量生成中的错误。由于更改,此情况下由dirichlet生成的变量流将与先前的版本不同。

(gh-14924)

PyArray_ConvertToCommonType中的标量提升

混合标量和数组在PyArray_ConvertToCommonType中的提升已更改为遵循np.result_type使用的规则。这意味着类似(1000, np.array([1], dtype=np.uint8)))的输入现在将返回uint16数据类型。在大多数情况下,这不会改变行为。请注意,通常不建议使用此 C-API 函数。这也修复了np.choose在这方面与 NumPy 的其他部分的行为相同。

(gh-14933)

Fasttake 和 fastputmask 插槽已经被弃用并且设为 NULL

现在永远不会使用 fasttake 和 fastputmask 插槽,必须始终设置为 NULL。这不会导致行为上的任何改变。但是,如果用户 dtype 应该设置其中之一,将会给出 DeprecationWarning。

(gh-14942)

np.ediff1d 通过使用 to_endto_begin 参数的转换行为

np.ediff1d现在对其额外的to_endto_begin参数使用"same_kind"转换规则。这确保了除非输入数组的整数类型小于to_beginto_end,否则会遵循类型安全性。在少数情况下,行为将比 1.16 和 1.17 中以前更严格。这是解决浮点 NaN 问题所必需的。

(gh-14981)

将空数组对象转换为 NumPy 数组

实现len(obj) == 0并且实现“数组样式”接口的对象(即实现 obj.__array__(), obj.__array_interface__, obj.__array_struct__ 或 Python buffer 接口的对象,并且也是序列(即 Pandas 对象)),当转换为数组时,现在将始终正确地保留其形状。如果此类对象先前的形状为(0, 1),则可以转换为形状为(0,)的数组(在第一个 0 后丢失所有维度)。

(gh-14995)

移除 multiarray.int_asbuffer

作为持续删除 Python 2 兼容性的一部分,移除了 multiarray.int_asbuffer。在 Python 3 上,它抛出了一个 NotImplementedError 并在内部未使用。预计在 Python 3 中不会有使用此方法的下游用例。

(gh-15229)

已移除 numpy.distutils.compat

该模块仅包含一个名为 get_exception() 的函数,用法如下:

代码语言:javascript复制
try:
    ...
except Exception:
    e = get_exception() 

其目的是处理在 Python 2.6 中引入的语法更改,即从except Exception, e:except Exception as e:,这意味着它仅适用于支持 Python 2.5 及更早版本的代码库。

(gh-15255)

issubdtype 不再将float解释为np.floating

numpy.issubdtype 自 NumPy 1.14 以来就有一个过期的FutureWarning。这意味着某些输入,其中第二个参数既不是数据类型也不是 NumPy 标量类型(例如字符串或像intfloat这样的 python 类型),现在将与传入np.dtype(arg2).type保持一致。这使结果符合预期,并在某些以前返回true的情况下导致错误的结果。

(gh-15773)

更改标量的round的输出,以使其与 Python 一致

__round__特殊方法的输出以及因此 Python 内置的round已更改为 Python int,以使其与在未传递参数时调用 Python float对象时的调用一致。以前,它会返回传入的np.dtype的标量。

(gh-15840)

numpy.ndarray 构造函数不再将strides=()解释为strides=None

前者已更改为将numpy.ndarray.strides设置为()的预期含义,而后者继续自动选择步幅。

(gh-15882)

C 级别的字符串到日期时间的转换发生了变化

C 级别的从字符串到数据类型的转换被简化。这一变更也修复了字符串到日期时间和时间差的转换,使其行为正确(即像 Python 转换一样使用string_arr.astype("M8"),而先前的转换会像string_arr.astype(np.int_).astype("M8")一样)。这只影响使用低级 C-API 进行手动转换(而不是完整数组转换)的代码,单个标量值或使用PyArray_GetCastFunc,因此不应影响绝大多数用户。

(gh-16068)

具有小种子的SeedSequence不再与生成冲突

较小的种子(小于2**96)以前被隐式地填充为 128 位,即内部熵池的大小。在生成时,生成密钥在填充 0 之前进行连接。由于第一个生成密钥是(0,),在生成之前的小种子将创建与第一个生成的SeedSequence相同的状态。现在,种子在显式填充到内部池大小之前进行填充 0,然后连接生成密钥。生成的SeedSequences将产生与先前版本不同的结果。未生成的SeedSequences仍然会产生相同的结果。

(gh-16551)

弃用

弃用对不规则输入的自动dtype=object

调用np.array([[1, [1, 2, 3]])将根据NEP 34发出DeprecationWarning。用户应明确使用dtype=object以避免警告。

(gh-15119)

numpy.rec的工厂函数中传递shape=0已弃用。

0 在以下函数中被看作是一个特殊情况,并被别名为 None

  • numpy.core.records.fromarrays
  • numpy.core.records.fromrecords
  • numpy.core.records.fromstring
  • numpy.core.records.fromfile

未来,0 将不再特殊处理,而会像任何其他整数一样被视为数组长度。

(gh-15217)

废弃了可能未被使用的 C-API 函数

以下 C-API 函数可能未被使用,已经被废弃:

  • PyArray_GetArrayParamsFromObject
  • PyUFunc_GenericFunction
  • PyUFunc_SetUsesArraysAsData

在大多数情况下,应该通过转换为数组来替换 PyArray_GetArrayParamsFromObject,而 PyUFunc_GenericFunction 可以用 PyObject_Call 来替换(详见文档)。

(gh-15427)

转换特定类型到 dtypes 被废弃

标量类型的超类,例如 np.integernp.genericnp.inexact,在转换为 dtype(或在 dtype 关键字参数中使用)时,现在会发出废弃警告。原因是 np.integer 被转换为 np.int_,而人们期望其代表 任何 整型(例如也包括 int8int16 等)。例如,dtype=np.floating 当前与 dtype=np.float64 相同,即使 np.float32 也是 np.floating 的子类。

(gh-15534)

废弃了 np.complexfloating 标量的 round

__round__ 傻帽方法以及因此而废弃的 Python 内建方法 round 在复数标量上。这不会影响 np.round

(gh-15840)

numpy.ndarray.tostring() 被废弃,建议使用 tobytes()

~numpy.ndarray.tobytes 这个函数自 1.9 版本开始就存在了,但直到这个版本之前,~numpy.ndarray.tostring 不会发出任何警告。发出警告的改变使得 NumPy 与同名的内建 array.array 方法达到了一致。

(gh-15867)

C API 的变更

对 API 函数中的 const 维度提供更好的支持

以下函数现在接受一个 npy_intp 的常量数组:

  • PyArray_BroadcastToShape
  • PyArray_IntTupleFromIntp
  • PyArray_OverflowMultiplyList

之前的调用者需要强制取消常量性来调用这些函数。

(gh-15251)

修饰 UFunc 的内循环

UFuncGenericFunction 现在期望指向常量 dimensionstrides 的指针作为参数。这意味着内循环可能不能再修改 dimensionstrides。这个改变会导致 incompatible-pointer-types 警告,强制用户要么忽略编译器警告,要么修饰自己循环的签名以添加 const 限定符。

(gh-15355)

新特性

现在 numpy.frompyfunc 接受一个 identity 参数

这允许在生成的 ufunc 上设置numpy.ufunc.reduce,意味着它可以用于空调用和多维调用。

(gh-8255)

np.str_标量现在支持缓冲区协议。

np.str_数组始终以 UCS4 存储,因此相应的标量现在通过缓冲区接口公开这一点,这意味着memoryview(np.str_('test'))现在可以使用。

(gh-15385)

numpy.copy添加了subok选项。

numpy.copy中添加了一个新的关键字参数subok,允许用户切换numpy.copy对于数组子类的行为。默认值为False,这与以前 numpy 版本中numpy.copy的行为一致。要保留数组子类的numpy.copy的副本,调用np.copy(arr, subok=True)。这个添加更好地记录了numpy.copy的默认行为与numpy.ndarray.copy方法不同,后者默认情况下会保留数组子类。

(gh-15685)

numpy.linalg.multi_dot现在接受out参数。

out可以用来避免创建numpy.linalg.multidot计算的最终产品的不必要副本。

(gh-15715)

numpy.count_nonzerokeepdims参数。

numpy.count_nonzero添加了参数keepdims,参数与numpy.sumnumpy.mean等缩减函数中的含义相同。

(gh-15870)

numpy.array_equalequal_nan参数。

numpy.array_equal添加了关键字参数equal_nanequal_nan是一个布尔值,用于切换比较中是否认为nan值相等(默认为False)。这与numpy.isclosenumpy.allclose等相关函数中使用的 API 相匹配。

(gh-16128)

改进

改进 CPU 功能的检测。

用更通用的函数npy_cpu_initnpy_cpu_have替换了之前特定于 gcc 的npy_cpu_supports机制,以测试 AVX 的支持,并通过NPY_CPU_HAVE c 宏以及 Python 级别的__cpu_features__字典公开结果。

(gh-13421)

在后备 lapack_lite 中在 64 位平台上使用 64 位整数大小。

在 64 位平台上使用 64 位整数大小作为后备的 LAPACK 库,当系统没有安装 LAPACK 时,它可以处理大型数组的线性代数。

(gh-15218)

在输入为np.float64时,使用 AVX512 内在函数来实现np.exp

当输入为 np.float64 时,使用 AVX512 内在函数来实现 np.exp,可以使得 np.float64 输入的 np.exp 性能提升 5-7 倍。在 linux64 上,_multiarray_umath.so 模块约增加了 63 KB。

(gh-15648)

禁用 madvise 巨大页的能力

在 Linux 上,NumPy 以前已经增加了对 madavise 巨大页的支持,这可以改善非常大的数组的性能。不幸的是,在旧版本的内核上,这导致性能回退,因此默认情况下在 4.6 版本之前的内核上已禁用支持。要覆盖默认值,您可以使用环境变量:

代码语言:javascript复制
NUMPY_MADVISE_HUGEPAGE=0 

或者将其设置为 1 以强制启用支持。请注意,只有在操作系统设置为使用 madvise 透明巨大页时才会有区别。

(gh-15769)

numpy.einsum 接受 NumPy int64 类型的下标列表

numpy.einsum 被传递 NumPy int64 数组作为它的下标列表时,不再抛出类型错误。

(gh-16080)

np.logaddexp2.identity 更改为 -inf

~numpy.logaddexp2 现在的身份为 -inf,允许在空序列上调用它。这与 ~numpy.logaddexp 的身份匹配。

(gh-16102)

变更

删除对 __array__ 的额外参数处理

从 NumPy 0.4 开始,代码路径和测试中已经存在一个 __array__(dtype=None, context=None) 的两参数变体。当调用 ufunc(op)ufunc.reduce(op) 时,如果 op.__array__ 存在,它会被激活。但是该变体未记录,并且不清楚其用途是什么。已将其移除。

(gh-15118)

numpy.random._bit_generator 移动到 numpy.random.bit_generator

为了将 numpy.random.BitGeneratornumpy.random.SeedSequence 暴露给 Cython,_bitgenerator 模块现在公开为 numpy.random.bit_generator

通过一个 pxd 文件提供 Cython 对随机分布的访问权限

c_distributions.pxd 提供了从 Cython 后面的多个随机分布的 c 函数的访问权限,方便使用和扩展它们。

(gh-15463)

修复了 numpy.random.multivariate_normal 中的 eighcholesky 方法

以前,当传递 method='eigh'method='cholesky' 时,numpy.random.multivariate_normal 产生了错误分布的样本。现在已经修复。

(gh-15872)

修复了 MT19937.jumped 中的跳转实现

此修复改变了从跳转的 MT19937 生成器中生成的流。这不影响直接种子化的 RandomStateMT19937 产生的流。

MT19937 跳转代码的翻译包含了一个逆向的循环顺序。MT19937.jumped匹配了松本真的 Horner 和滑动窗口跳转方法的原始实现。

(gh-16153)

高亮内容

  • 代码不再兼容 Python 版本< 3.6(包括 Python 2)的版本。numpy.compat中的兼容性代码将继续支持第三方包,但它们可能在将来的版本中被弃用。请注意,由于使用了 f-strings,1.19.x 将与早期版本的 Python 编译。 (gh-15233)

弃用已过期

无法再向numpy.insertnumpy.delete传递 0d 数组的轴

这结束了从 1.9 开始的弃用,当向~numpy.insert~numpy.delete的调用中传递了axis参数时,0d 数组的axisobj参数和索引将被完全忽略。在这些情况下,insert(arr, "nonsense", 42, axis=0)实际上会覆盖整个数组,而delete(arr, "nonsense", axis=0)将是arr.copy()

现在在 0d 数组上传递axis会引发~numpy.AxisError

(gh-15802)

numpy.delete不再忽略超出范围的索引

这结束了从 1.8 和 1.9 开始的弃用,其中np.delete在序列索引中会忽略负数和超出范围的项目。与传递单个索引时的行为相矛盾。

现在超出范围的项目会抛出IndexError,并且负数项目从末尾索引。

(gh-15804)

numpy.insertnumpy.delete不再接受非整数索引

这结束了从 1.9 开始的弃用,允许并将非整数索引序列转换为整数。现在传递非整数索引序列会引发IndexError,就像传递单个非整数标量时一样。

(gh-15805)

numpy.delete不再将布尔索引转换为整数

这结束了从 1.8 开始的弃用,其中np.delete会将布尔数组和标量转换为整数索引。现在的行为是将布尔数组作为掩码处理,并对布尔标量引发错误。

(gh-15815)

无法再向numpy.insertnumpy.delete传递 0d 数组的轴

这结束了从 1.9 开始的弃用,当向~numpy.insert~numpy.delete的调用中传递了axis参数时,0d 数组的axisobj参数和索引将被完全忽略。在这些情况下,insert(arr, "nonsense", 42, axis=0)实际上会覆盖整个数组,而delete(arr, "nonsense", axis=0)将是arr.copy()

现在在 0d 数组上传递axis会引发~numpy.AxisError

(gh-15802)

numpy.delete不再忽略超出范围的索引

这解决了从 1.8 版本和 1.9 版本开始的弃用情况,其中np.delete会忽略序列索引中的负数和超出边界的项目。这与其仅传递单个索引时的行为相矛盾。

现在超出边界的项目会抛出IndexError,而负数项目索引则从末尾开始。

(gh-15804)

numpy.insertnumpy.delete不再接受非整数索引

这解决了从 1.9 版本开始的一种弃用情况,其中允许传递非整数索引的序列并将其转换为整数。现在传递非整数索引的序列会引发IndexError,就像传递单个非整数标量时一样。

(gh-15805)

numpy.delete不再将布尔索引转换为整数

这解决了从 1.8 版本开始,np.delete会将布尔数组和标量转换为索引参数。现在的行为是将布尔数组视为掩码,并对布尔标量抛出错误。

(gh-15815)

兼容性注意事项

将随机变量流从numpy.random.Generator.dirichlet更改

通过使用不同的算法修复了在小的“alpha”值的 Dirichlet 分布的随机变量生成中的错误,即max(alpha) < 0.1时。由于更改,这种情况下由dirichlet生成的随机变量流将与先前版本不同。

(gh-14924)

PyArray_ConvertToCommonType中的标量提升

PyArray_ConvertToCommonType中混合标量和数组的提升已更改为符合np.result_type的提升。这意味着类似(1000, np.array([1], dtype=np.uint8)))的输入现在会返回uint16数据类型。在大多数情况下,行为保持不变。请注意,通常不建议使用此 C-API 函数。这也修复了np.choose在这方面的行为与 NumPy 的其余部分相同。

(gh-14933)

快速获取和快速放置掩码插槽已弃用并置空

快速获取和快速放置掩码插槽现在永远不会被使用,并且必须始终设置为 NULL。这不会导致行为改变。但是,如果用户数据类型应该设置其中一个,将会发出弃用警告。

(gh-14942)

np.ediff1dto_endto_begin的转换行为

np.ediff1d现在对其附加的to_endto_begin参数使用"same_kind"转换规则。这可以确保类型安全,除非输入数组的整数类型小于to_beginto_end。在少数情况下,行为将比 1.16 和 1.17 版本中更严格。这是为了解决浮点 NaN 的问题。

(gh-14981)

将空的类数组对象转换为 NumPy 数组

具有len(obj) == 0的对象,其实现“类数组”接口,指实现obj.__array__()obj.__array_interface__obj.__array_struct__或 Python 缓冲区接口的对象,并且也是序列(即 Pandas 对象),现在在转换为数组时将始终正确保留其形状。如果这样的对象以前具有形状(0, 1),它可能被转换为形状(0,)的数组(在第一个 0 后失去所有维度)。

(gh-14995)

删除了multiarray.int_asbuffer

作为持续删除 Python 2 兼容性的一部分,移除了multiarray.int_asbuffer。在 Python 3 上,它抛出NotImplementedError并在内部未使用。预计在 Python 3 中不会有此方法的下游用例。

(gh-15229)

numpy.distutils.compat已被移除

此模块仅包含函数get_exception(),用法如下:

代码语言:javascript复制
try:
    ...
except Exception:
    e = get_exception() 

它的目的是处理在 Python 2.6 中引入的语法更改,从except Exception, e:except Exception as e:,这意味着它只对支持 Python 2.5 及更早版本的代码库是必要的。

(gh-15255)

issubdtype 不再解释floatnp.floating

numpy.issubdtype自 NumPy 1.14 以来一直存在 FutureWarning,现在已经过期。这意味着某些输入,其中第二个参数既不是数据类型也不是 NumPy 标量类型(例如字符串或 Python 类型,如intfloat),现在将与传入np.dtype(arg2).type保持一致。这使结果符合预期,并在某些情况下导致先前返回 true 的错误结果。

(gh-15773)

更改对标量的round输出,以使其与 Python 一致

__round__dunder 方法的输出和因此 Python 内置的round已更改为 Pythonint,使其与在无参数调用时在 Pythonfloat对象上调用它保持一致。先前,在 Pythonfloat对象上调用时,它将返回传入的np.dtype的标量。

(gh-15840)

numpy.ndarray构造函数不再将strides=()解释为strides=None

前者已更改为将numpy.ndarray.strides设置为()的预期含义,而后者则继续导致自动选择间距。

(gh-15882)

C 级字符串到日期时间的转换已更改

从字符串到日期时间和时间增量的 C 级转换已经简化。这一变化也修复了字符串到日期时间和时间增量转换的行为(即像使用string_arr.astype("M8")的 Python 转换,而之前的转换行为像string_arr.astype(np.int_).astype("M8"))。这仅影响使用低级 C-API 进行手动转换(而不是完整的数组转换)的代码,因此不会影响绝大多数用户。

(gh-16068)

具有小种子的SeedSequence不再与生成冲突

小种子(小于2**96)之前隐式地被填充为 128 位,内部熵池的大小。在生成时,生成密钥被连接在 0 填充之前。由于第一个生成密钥是(0,),生成前的小种子创建了与第一个生成的SeedSequence相同的状态。现在,种子明确地被填充到内部池的大小,然后再连接生成密钥。生成的SeedSequence将产生与之前版本不同的结果。未生成的SeedSequence仍将产生相同的结果。

(gh-16551)

numpy.random.Generator.dirichlet更改随机变量流

修复了使用不同算法生成小“alpha”值的 Dirichlet 分布的随机变量时的 bug,当max(alpha) < 0.1时。由于这个变化,在这种情况下,由dirichlet生成的变量流将与先前的版本不同。

(gh-14924)

PyArray_ConvertToCommonType中的标量提升

使用np.result_type的混合标量和数组在PyArray_ConvertToCommonType的推广已被更改,以符合其使用的那些。这意味着输入,如(1000, np.array([1], dtype=np.uint8)))现在将返回uint16数据类型。在大多数情况下,行为不变。请注意,通常不鼓励使用这个 C-API 函数。这也修复了np.choose在这方面与 NumPy 的其他部分行为相同。

(gh-14933)

fasttakefastputmask槽已弃用并已设置为NULL

fasttakefastputmask槽现在从不使用,必须始终设置为NULL。这将不会改变行为。但是,如果用户数据类型应该设置其中一个,将会产生DeprecationWarning

(gh-14942)

np.ediff1dto_endto_begin的类型转换行为

np.ediff1d现在对其附加的to_endto_begin参数使用了"same_kind"转换规则。这确保了类型安全,除非输入数组的类型比to_beginto_end小。在罕见的情况下,行为将比 1.16 和 1.17 中以前更严格。这是为了解决浮点 NaN 的问题。

(gh-14981)

将类似空数组对象转换为 NumPy 数组

具有len(obj) == 0且实现“类似数组”的接口的对象,指的是实现了obj.__array__()obj.__array_interface__obj.__array_struct__或 Python 缓冲区接口的对象,且也是序列(即 Pandas 对象),将在转换为数组时始终保持其正确的形状。如果此类对象先前的形状是(0, 1),它可能被转换为形状为(0,)的数组(第一个 0 后面的所有维度被丢失)。

(gh-14995)

移除了multiarray.int_asbuffer

作为持续删除 Python 2 兼容性的一部分,multiarray.int_asbuffer已被移除。在 Python 3 上,它会抛出一个NotImplementedError,并且在内部未被使用。预期在 Python 3 中不会有此方法的下游用例。

(gh-15229)

numpy.distutils.compat已被移除

此模块仅包含名为get_exception()的函数,用法如下:

代码语言:javascript复制
try:
    ...
except Exception:
    e = get_exception() 

它的目的是处理 Python 2.6 引入的语法变化,从except Exception, e:except Exception as e:,意味着只有支持 Python 2.5 及更旧版本的代码库才是必需的。

(gh-15255)

issubdtype不再将float解释为np.floating

numpy.issubdtype自 NumPy 1.14 以来一直有一个 FutureWarning,现在已过期。这意味着某些输入,其中第二个参数既不是数据类型也不是 NumPy 标量类型(如字符串或像intfloat这样的 Python 类型),现在将与传入np.dtype(arg2).type一致。这使结果与预期一致,并在某些先前返回 true 的情况下导致 false 结果。

(gh-15773)

将标量的round输出更改为与 Python 一致

__round__ dunder 方法的输出和因此 Python 内置的round已更改为一致,不带参数调用时将返回 Python int。先前,如果传入np.dtype,它会返回一个np.dtype的标量。

(gh-15840)

numpy.ndarray构造函数不再将strides=()解释为strides=None

前者已更改为将numpy.ndarray.strides设置为()的预期含义,而后者继续自动选择步幅。

(gh-15882)

C 级字符串到日期时间的转换已更改

字符串的 C 级转换被简化。这一变化也修复了字符串到日期时间和时间间隔转换的行为(例如使用string_arr.astype("M8")的 Python 转换,而以前的转换行为类似于string_arr.astype(np.int_).astype("M8"))。这只影响使用低级 C-API 进行手动转换(而不是完整的数组转换)的代码的单个标量值,或者使用PyArray_GetCastFunc,因此不应影响绝大部分用户。

(gh-16068)

SeedSequence具有小种子将不再与生成发生冲突

小种子(小于2**96)以前曾被隐式地 0 填充到 128 位,即内部熵池的大小。生成时,生成密钥在 0 填充之前被串联。由于第一个生成密钥是(0,),生成之前的小种子创建了与第一个生成SeedSequence相同的状态。现在,种子在串联生成密钥之前被明确地 0 填充到内部池大小。生成的SeedSequences将产生与上一个版本不同的结果。未生成的SeedSequences将仍然产生相同的结果。

(gh-16551)

弃用

弃用对不规则输入的自动dtype=object

调用np.array([[1, [1, 2, 3]])将根据NEP 34发出DeprecationWarning。用户应该明确使用dtype=object来避免警告。

(gh-15119)

numpy.rec的工厂函数传递shape=0已被弃用

0被视为特殊情况,并且在以下函数中别名为None

  • numpy.core.records.fromarrays
  • numpy.core.records.fromrecords
  • numpy.core.records.fromstring
  • numpy.core.records.fromfile

将来,0将不再被特殊对待,将被视为与其他整数一样的数组长度。

(gh-15217)

弃用的可能未使用的 C-API 函数

下面的 C-API 函数可能未被使用,已被弃用:

  • PyArray_GetArrayParamsFromObject
  • PyUFunc_GenericFunction
  • PyUFunc_SetUsesArraysAsData

在大多数情况下,PyArray_GetArrayParamsFromObject应该被转换为数组,而PyUFunc_GenericFunction可以被PyObject_Call替代(详见文档了解详情)。

(gh-15427)

转换某些类型到数据类型已经过时

标量类型的超类,如np.integernp.generic,或np.inexact在转换为数据类型(或在数据类型关键字参数中使用)时将会发出弃用警告。之所以这样做是因为np.integer被转换为np.int_,而它应该表示任何整数(例如,也包括int8int16等)。例如,dtype=np.floating目前与dtype=np.float64相同,即使np.float32也是np.floating的子类。

(gh-15534)

废弃round用于np.complexfloating标量

复数标量的__round__ dunder 方法的输出以及因此 Python 内置的round已经被废弃。这不影响np.round

(gh-15840)

numpy.ndarray.tostring()已被废弃,推荐使用tobytes()代替

~numpy.ndarray.tobytes自 1.9 版以来就存在,但在此版中~numpy.ndarray.tostring并没有发出警告。发出警告的变化使得 NumPy 与同名的内置array.array方法保持一致。

(gh-15867)

废弃对不规则输入自动使用dtype=object

调用np.array([[1, [1, 2, 3]])将会发出DeprecationWarning,依照NEP 34。用户应该明确使用dtype=object来避免这个警告。

(gh-15119)

传递shape=0numpy.rec中的工厂函数已经被废弃

特殊情况下0在以下函数中被别名为None

  • numpy.core.records.fromarrays
  • numpy.core.records.fromrecords
  • numpy.core.records.fromstring
  • numpy.core.records.fromfile

未来,0将不再被特殊对待,将被当作其他整数一样对待。

(gh-15217)

废弃可能未被使用的 C-API 函数

以下的 C-API 函数可能没有被使用,已经被废弃:

  • PyArray_GetArrayParamsFromObject
  • PyUFunc_GenericFunction
  • PyUFunc_SetUsesArraysAsData

在大部分情况下PyArray_GetArrayParamsFromObject应该被转换为数组,而PyUFunc_GenericFunction可以被PyObject_Call代替(详细信息请参阅文档)。

(gh-15427)

转换特定类型为 dtypes 已被废弃

标量类型的超类,比如np.integernp.generic或者np.inexact现在在转换为 dtype(或者在 dtype 关键字参数中使用)时将会产生废弃警告。这是因为np.integer转换为了np.int_,虽然它应该表示任何整数(比如int8int16等)。例如,dtype=np.floating目前与dtype=np.float64完全相同,尽管np.float32也是np.floating的子类。

(gh-15534)

废弃round用于np.complexfloating标量

复数标量的__round__ dunder 方法的输出以及因此 Python 内置的round已经被废弃。这不影响np.round

(gh-15840)

numpy.ndarray.tostring()已被废弃,推荐使用tobytes()代替

自 1.9 版本以来,~numpy.ndarray.tobytes一直存在,但直到这个版本,~numpy.ndarray.tostring没有发出任何警告。发出警告的改变使 NumPy 与相同名称的内置array.array方法保持一致。

(gh-15867)

C API 变更

Better support for const dimensions in API functions

以下函数现在接受一个常量数组npy_intp

  • PyArray_BroadcastToShape
  • PyArray_IntTupleFromIntp
  • PyArray_OverflowMultiplyList

以前,调用者必须将 const 修饰符去除才能调用这些函数。

(gh-15251)

Const qualify UFunc inner loops

UFuncGenericFunction现在期望以指向 const dimensionstrides的指针作为参数。这意味着内部循环可能不再修改dimensionstrides。这一变化导致了incompatible-pointer-types的警告,强迫用户要么忽略编译器的警告,要么在自己的循环签名中添加 const 修饰符。

(gh-15355)

Better support for const dimensions in API functions

以下函数现在接受一个常量数组npy_intp

  • PyArray_BroadcastToShape
  • PyArray_IntTupleFromIntp
  • PyArray_OverflowMultiplyList

以前,调用者必须将 const 修饰符去除才能调用这些函数。

(gh-15251)

Const qualify UFunc inner loops

UFuncGenericFunction现在期望以指向 const dimensionstrides的指针作为参数。这意味着内部循环可能不再修改dimensionstrides。这一变化导致了incompatible-pointer-types的警告,强迫用户是否要忽略编译器的警告,或者在自己的循环签名中添加 const 修饰符。

(gh-15355)

新功能

numpy.frompyfunc现在接受一个 identity 参数

这允许在生成的 ufunc 上设置numpy.ufunc.identity属性,这意味着它可以用于空和多维调用numpy.ufunc.reduce

(gh-8255)

np.str_标量现在支持缓冲区协议

np.str_数组总是以 UCS4 格式存储,因此相应的标量现在通过缓冲区接口公开这一点,这意味着memoryview(np.str_('test'))现在可以使用。

(gh-15385)

subok选项用于numpy.copy

numpy.copy添加了一个新的关键字参数subok,允许用户切换numpy.copy相对于数组子类的行为。默认值为False,与先前版本的 numpy 中numpy.copy的行为一致。要创建一个保留数组子类的副本,调用np.copy(arr, subok=True)。这个添加更好地说明了numpy.copy的默认行为与numpy.ndarray.copy方法有所不同,后者默认情况下尊重数组子类。

(gh-15685)

numpy.linalg.multi_dot现在接受一个out参数

out可以用来避免通过numpy.linalg.multidot计算的最终产品创建不必要的副本。

(gh-15715)

numpy.count_nonzerokeepdims参数

numpy.count_nonzero添加了参数keepdims。这个参数与numpy.sumnumpy.mean等缩减函数中的含义相同。

(gh-15870)

numpy.array_equalequal_nan参数

numpy.array_equal添加了关键字参数equal_nanequal_nan是一个布尔值,用于切换在比较中是否将nan值视为相等(默认值为False)。这与numpy.isclosenumpy.allclose等相关函数中使用的 API 相匹配。

(gh-16128)

numpy.frompyfunc现在接受一个 identity 参数

使得可以在生成的 ufunc 上设置numpy.ufunc.identity特性,这意味着它可以用于空的和多维的numpy.ufunc.reduce调用。

(gh-8255)

np.str_标量现在支持缓冲协议

np.str_数组始终以 UCS4 存储,因此相应的标量现在通过缓冲接口公开此特性,这意味着memoryview(np.str_('test'))现在可以使用。

(gh-15385)

numpy.copysubok选项

numpy.copy添加了一个新的关键字参数subok,允许用户切换numpy.copy相对于数组子类的行为。默认值为False,与先前版本的 numpy 中numpy.copy的行为一致。要创建一个保留数组子类的副本,调用np.copy(arr, subok=True)。这个添加更好地说明了numpy.copy的默认行为与numpy.ndarray.copy方法有所不同,后者默认情况下尊重数组子类。

(gh-15685)

numpy.linalg.multi_dot现在接受一个out参数

out可以用来避免通过numpy.linalg.multidot计算的最终产品创建不必要的副本。

(gh-15715)

numpy.count_nonzero 添加了 keepdims 参数

添加了参数 keepdimsnumpy.count_nonzero。该参数的含义与在缩减函数中的含义相同,比如 numpy.sumnumpy.mean

(gh-15870)

numpy.array_equalequal_nan 参数

numpy.array_equal 添加了关键字参数 equal_nanequal_nan 是一个布尔值,用于切换在比较中是否认为 nan 值相等(默认为 False)。这与诸如 numpy.isclosenumpy.allclose 等相关函数中使用的 API 相匹配。

(gh-16128)

改进

改进 CPU 特性的检测

用更一般的函数 npy_cpu_initnpy_cpu_have 替换了npy_cpu_supports,后者是一个用于测试 AVX 支持的 gcc 特定机制,并通过 NPY_CPU_HAVE c-macro 以及 python-level __cpu_features__ 字典来公开结果。

(gh-13421)

在 64 位平台上使用 64 位整数大小作为后备 lapack_lite

在后备 LAPACK 库中使用 64 位整数大小来处理线性代数的大数组,这在系统没有安装 LAPACK 时会发生。

(gh-15218)

当输入为 np.float64 时,使用 AVX512 内在来实现 np.exp

当输入为 np.float64 时,使用 AVX512 内在来实现 np.exp,这可以将 np.float64 输入的 np.exp 的性能提高 5-7 倍。在 linux64 上,_multiarray_umath.so 模块已经增长了大约 63 KB。

(gh-15648)

禁用 madvise 大页的能力

在 Linux 上,NumPy 曾经添加了对 madvise 大页的支持,这可以改善非常大的数组的性能。不幸的是,在旧的内核版本上,这导致了性能回归,因此在 4.6 版本之前的内核上,默认情况下已禁用了对该支持。要覆盖默认设置,你可以使用环境变量:

代码语言:javascript复制
NUMPY_MADVISE_HUGEPAGE=0 

或将其设置为 1 以强制启用支持。请注意,这仅在操作系统设置为使用 madvise 透明大页时才有差异。

(gh-15769)

numpy.einsum 在下标列表中接受 NumPy int64 类型

numpy.einsum 以 NumPy int64 数组作为下标列表进行传递时,将不再抛出类型错误。

(gh-16080)

np.logaddexp2.identity 改变为 -inf

现在,ufunc ~numpy.logaddexp2 具有 -inf 的身份,允许其在空序列上调用。这与 ~numpy.logaddexp 的标识符匹配。

(gh-16102)

在 64 位平台上使用 64 位整数大小作为后备 lapack_lite

在 64 位平台上使用 64 位整数大小在回退 LAPACK 库中,当系统没有安装 LAPACK 时,允许其处理大数组的线性代数。

(gh-15218)

当输入为 np.float64 时,使用 AVX512 内在函数实现 np.exp

当输入为 np.float64 时,使用 AVX512 内在函数实现 np.exp,可以比之前快 5-7 倍。在 linux64 下,_multiarray_umath.so模块的大小增长了约 63KB。

(gh-15648)

禁用 madvise hugepages 的能力

在 Linux 上,NumPy 先前已添加了对 madvise hugepages 的支持,这可以改善非常大的数组的性能。不幸的是,在旧的内核版本上,这导致了性能回归,因此在内核版本低于 4.6 之前,默认情况下已禁用了对其的支持。要覆盖默认设置,您可以使用环境变量:

代码语言:javascript复制
NUMPY_MADVISE_HUGEPAGE=0 

或者将其设置为 1 以强制启用支持。请注意,只有在操作系统设置为使用 madvise 透明大页时,才会产生区别。

(gh-15769)

numpy.einsum 在下标列表中接受 NumPy int64 类型

numpy.einsum 以 NumPy int64数组作为下标列表时,不再抛出类型错误。

(gh-16080)

np.logaddexp2.identity 更改为-inf

ufunc ~numpy.logaddexp2 现在具有-inf的身份,允许在空序列上调用它。这与~numpy.logaddexp的身份匹配。

(gh-16102)

变化

删除对__array__的额外参数处理

从 NumPy 0.4 起,代码路径和测试就存在一个__array__(dtype=None, context=None)的双参数变体。当调用 ufunc(op)ufunc.reduce(op) 时,若存在 op.__array__ ,则会激活它。然而,该变体没有文档说明,并且并不清楚其使用意图。已将其移除。

(gh-15118)

numpy.random._bit_generator 移至 numpy.random.bit_generator

为了将 numpy.random.BitGeneratornumpy.random.SeedSequence 暴露给 Cython,_bitgenerator 模块现在公开为 numpy.random.bit_generator

经由pxd文件提供对随机分布的 Cython 访问

c_distributions.pxd通过 Cython 提供了对许多随机分布背后的 C 函数的访问,使得使用和扩展它们变得更加方便。

(gh-15463)

修复了numpy.random.multivariate_normal中的eighcholesky方法

以前,在传递 method='eigh'method='cholesky' 时,numpy.random.multivariate_normal 产生了错误分布的样本。现在已经修复。

(gh-15872)

修复了MT19937.jumped中的跳转实现

该修复改变了从跳动的 MT19937 生成器产生的流。它不影响直接种子化的RandomStateMT19937产生的流。

MT19937 的跳跃代码的翻译为反向循环顺序。MT19937.jumped与松本真的 Horner 和滑动窗口跳跃方法的原始实现相匹配。

(gh-16153)

移除对__array__的额外参数的处理

自 NumPy 0.4 以来,代码中一直存在着__array__(dtype=None, context=None)的两个参数变体的代码路径和测试。当调用ufunc(op)ufunc.reduce(op)时,如果op.__array__存在,则会激活它。但是那个变体没有记录,并且不清楚其用途是什么。已将其移除。

(gh-15118)

numpy.random._bit_generator 移动到 numpy.random.bit_generator

为了将numpy.random.BitGeneratornumpy.random.SeedSequence暴露给 Cython,_bitgenerator模块现在作为numpy.random.bit_generator公开

Cython 通过pxd文件提供对随机分布的访问

c_distributions.pxd提供对 Cython 背后的许多随机分布的 C 函数的访问,使其方便使用和扩展。

(gh-15463)

修复了numpy.random.multivariate_normal中的eighcholesky方法

以前,当传递method='eigh'method='cholesky'时,numpy.random.multivariate_normal生成了来自错误分布的样本。现在已修复。

(gh-15872)

修复了MT19937.jumped中的跳跃实现

该修复改变了从跳动的 MT19937 生成器产生的流。它不影响直接种子化的RandomStateMT19937产生的流。

MT19937 的跳跃代码的翻译为反向循环顺序。MT19937.jumped与松本真的 Horner 和滑动窗口跳跃方法的原始实现相匹配。

(gh-16153)

NumPy 1.18.5 版本发布说明

原文:numpy.org/doc/1.26/release/1.18.5-notes.html

这是一个简短的版本,允许在 Python3.5 中使用 pickle protocol=5。这是受到最近将 pickle5 回溯到 Python3.5 的启发。

此版本支持的 Python 版本为 3.5-3.8。下游开发人员应使用 Cython >= 0.29.15 来支持 Python 3.8,并且使用 OpenBLAS >= 3.7 来避免在 Skylake 架构上出现错误。

贡献者

共有 3 人为此版本做出了贡献。在其名字后面带有“ ”符号的人第一次为补丁做出了贡献。

  • 查尔斯·哈里斯
  • 马蒂·皮卡斯
  • 庄思远

已合并的拉取请求

共有 2 个拉取请求被合并到此版本中。

  • #16439:ENH:为 Python3.5 启用 pickle 协议 5 支持
  • #16441:BUG:relpath 在 Windows 上无法处理不同驱动器

贡献者

共有 3 人为此版本做出了贡献。在其名字后面带有“ ”符号的人第一次为补丁做出了贡献。

  • 查尔斯·哈里斯
  • 马蒂·皮卡斯
  • 庄思远

已合并的拉取请求

共有 2 个拉取请求被合并到此版本中。

  • #16439:ENH:为 Python3.5 启用 pickle 协议 5 支持
  • #16441:BUG:relpath 在 Windows 上无法处理不同驱动器

NumPy 1.18.4 Release Notes

原文:numpy.org/doc/1.26/release/1.18.4-notes.html

这是 1.18.x 系列中最后一个计划发布的版本。它恢复了在 1.18.3 中引入的 bool("0") 行为,并修复了 Generator.integers 的一个 bug。当 numpy 导入失败时,错误消息中还包含到文档中新故障排除部分的链接。

本次发布支持的 Python 版本为 3.5-3.8。下游开发人员应使用 Cython >= 0.29.15 来支持 Python 3.8,并且使用 OpenBLAS >= 3.7 以避免在 Skylake 架构上出现错误。

贡献者

本次发布共有 4 个人参与了贡献。名字后带有“ ”符号的人第一次为该版本提交了贡献。

  • Charles Harris
  • Matti Picus
  • Sebastian Berg
  • Warren Weckesser

已合并的拉取请求

本次发布合并了 6 个拉取请求。

  • #16055: BLD:添加 i686 支持到 1.18 构建
  • #16090: BUG:random:Generator.integers(2**32) 总是返回 0。
  • #16091: BLD:修复 macOS 上 libgfortran 的路径问题
  • #16109: REV:回滚了对类型转换的副作用更改
  • #16114: BLD:在 Windows 上将 openblas 库放在本地目录中
  • #16132: DOC:将导入错误“howto”更改为链接到新的故障排除…

贡献者

本次发布共有 4 个人参与了贡献。名字后带有“ ”符号的人第一次为该版本提交了贡献。

  • Charles Harris
  • Matti Picus
  • Sebastian Berg
  • Warren Weckesser

已合并的拉取请求

本次发布共合并了 6 个拉取请求。

  • #16055: BLD:添加 i686 支持到 1.18 构建
  • #16090: BUG:random:Generator.integers(2**32) 总是返回 0。
  • #16091: BLD:修复 macOS 上 libgfortran 的路径问题
  • #16109: REV:回滚了对类型转换的副作用更改
  • #16114: BLD:在 Windows 上将 openblas 库放在本地目录中
  • #16132: DOC:将导入错误“howto”更改为链接到新的故障排除…

NumPy 1.18.3 版本说明

原文:numpy.org/doc/1.26/release/1.18.3-notes.html

此版本包含了各种错误/退化性修复。

此版本支持的 Python 版本为 3.5-3.8。下游开发人员应使用 Cython >= 0.29.15 以支持 Python 3.8,并使用 OpenBLAS >= 3.7 以避免在 Skylake 架构上出错。

亮点

  • 修复了numpy.random.multivariate_normalmethod=’eigh’method=’cholesky’ 方法。这些方法产生了错误分布的样本。

贡献者

此版本共有 6 人为其做出贡献。名字后面带有“ ”的人第一次为其贡献了补丁。

  • Charles Harris
  • Max Balandat
  • @Mibu287
  • Pan Jan
  • Sebastian Berg
  • @panpiort8

合并的拉取请求

此版本共合并了 5 个拉取请求。

  • #15916:BUG:修复 numpy.random.multivariate_normal 的 eigh 和 cholesky 方法
  • #15929:BUG, MAINT:移除字符串到数字的不正确特例…
  • #15930:BUG:确保内存错误发生后数组处于有效状态…
  • #15954:BUG:检查 _generator.multinomial 中的 pvals 是否为 1D。
  • #16017:BUG:generator.dirichlet 中的 Alpha 参数必须是 1D

亮点

  • 修复了numpy.random.multivariate_normalmethod=’eigh’method=’cholesky’ 方法。这些方法产生了错误分布的样本。

贡献者

此版本共有 6 人为其做出贡献。名字后面带有“ ”的人第一次为其贡献了补丁。

  • Charles Harris
  • Max Balandat
  • @Mibu287
  • Pan Jan
  • Sebastian Berg
  • @panpiort8

合并的拉取请求

此版本共合并了 5 个拉取请求。

  • #15916:BUG:修复 numpy.random.multivariate_normal 的 eigh 和 cholesky 方法
  • #15929:BUG, MAINT:移除字符串到数字的不正确特例…
  • #15930:BUG:确保内存错误发生后数组处于有效状态…
  • #15954:BUG:检查 _generator.multinomial 中的 pvals 是否为 1D。
  • #16017:BUG:generator.dirichlet 中的 Alpha 参数必须是 1D

NumPy 1.18.2 发行说明

原文:numpy.org/doc/1.26/release/1.18.2-notes.html

这个小版本包含了 numpy/random 中性能回退的修复以及一些 bug/维护更新。

此版本支持的 Python 版本为 3.5-3.8。下游开发人员应使用 Cython >= 0.29.15 来支持 Python 3.8,以及 OpenBLAS >= 3.7 以避免在 Skylake 架构上发生错误。

贡献者

共有 5 人对此版本进行了贡献。名字前带有“ ”号的人第一次贡献了补丁。

  • Charles Harris
  • Ganesh Kathiresan
  • Matti Picus
  • Sebastian Berg
  • przemb

合并的拉取请求

共有 7 个拉取请求合并到此版本。

  • #15675: TST:将 _no_tracing 移至 testing._private
  • #15676: MAINT:某些随机函数中存在较大开销
  • #15677: TST:不在 Azure Mac 测试中创建 gfortran 链接。
  • #15679: BUG:在 ndarray.__contains__ 中添加了遗漏的错误检查
  • #15722: MAINT:使用基于列表的 API 调用子进程
  • #15729: REL:为 1.18.2 版本做准备。
  • #15734: BUG:修复 32 位系统上 nm 失败的逻辑错误

贡献者

共有 5 人对此版本进行了贡献。名字前带有“ ”号的人第一次贡献了补丁。

  • Charles Harris
  • Ganesh Kathiresan
  • Matti Picus
  • Sebastian Berg
  • przemb

合并的拉取请求

共有 7 个拉取请求合并到此版本。

  • #15675: TST:将 _no_tracing 移至 testing._private
  • #15676: MAINT:某些随机函数中存在较大开销
  • #15677: TST:不在 Azure Mac 测试中创建 gfortran 链接。
  • #15679: BUG:在 ndarray.__contains__ 中添加了遗漏的错误检查
  • #15722: MAINT:使用基于列表的 API 调用子进程
  • #15729: REL:为 1.18.2 版本做准备。
  • #15734: BUG:修复 32 位系统上 nm 失败的逻辑错误

NumPy 1.18.1 发布说明

原文:numpy.org/doc/1.26/release/1.18.1-notes.html

此版本修复了针对 NumPy 1.18.0 报告的错误。特别是造成广泛问题的两个缺陷是:

  • Cython 随机扩展测试没有使用临时目录进行构建,导致权限违规。 现已修复。
  • Numpy distutils 在所有 C 编译器运行中添加了 -std=c99,导致了行为改变和下游编译问题。 该标志现在仅在构建 numpy C 代码时应用。

本版本支持的 Python 版本是 3.5-3.8。 下游开发者应使用 Cython >= 0.29.14 来支持 Python 3.8,并使用 OpenBLAS >= 3.7 来避免在 Skylake 架构上发生错误。

贡献者

共有 7 人对本次发布作出了贡献。 姓名后带有“ ”表示他们首次为补丁作出贡献。

  • Charles Harris
  • Matti Picus
  • Maxwell Aladago
  • Pauli Virtanen
  • Ralf Gommers
  • Tyler Reddy
  • Warren Weckesser

已处理的拉取请求

共有 13 个拉取请求合并到本次发布。

  • #15158:MAINT:为 towncrier 更新 pavement.py。
  • #15159:DOC: 添加移动模块到 1.18 发布说明
  • #15161:MAINT:1.18.x 的轻微回退和更新
  • #15176:TST:添加大整数数组的 assert_array_equal 测试
  • #15184:BUG: 使用临时目录并检查 cython 测试的版本 (#15170)
  • #15220:BUG: distutils: 修复 msvc gfortran openblas 处理角落情况。
  • #15221:BUG: 移除 -std=c99 用于 c 编译 (#15194)
  • #15222:MAINT:在 win32 上取消跳过测试
  • #15223:TST:在 Travis 和 Azure 上添加 BLAS ILP64 运行
  • #15245:MAINT:仅在需要时添加 –std=c99
  • #15246:BUG: 函数梯度处理整数数组问题。
  • #15247:MAINT: 在测试中不要使用私有 Python 函数。
  • #15250:REL:准备 NumPy 1.18.1 发布。

贡献者

共有 7 人对本次发布作出了贡献。 姓名后带有“ ”表示他们首次为补丁作出贡献。

  • Charles Harris
  • Matti Picus
  • Maxwell Aladago
  • Pauli Virtanen
  • Ralf Gommers
  • Tyler Reddy
  • Warren Weckesser

已处理的拉取请求

共有 13 个拉取请求合并到本次发布。

  • #15158:MAINT:为 towncrier 更新 pavement.py。
  • #15159:DOC: 添加移动模块到 1.18 发布说明
  • #15161: MAINT, DOC: 1.18.x 的小修复和更新
  • #15176: TST: 为大整数数组添加 assert_array_equal 测试
  • #15184: BUG: 在 cython 测试中使用临时目录并检查版本(#15170)
  • #15220: BUG: distutils: 修复 msvc gfortran openblas 处理的边缘情况
  • #15221: BUG: 移除 C 编译的 -std=c99(#15194)
  • #15222: MAINT: 在 win32 上取消跳过的测试
  • #15223: TST: 在 Travis 和 Azure 中添加 BLAS ILP64 运行
  • #15245: MAINT: 仅在需要时添加 –std=c99
  • #15246: BUG: lib: 修复梯度对整数数组的处理
  • #15247: MAINT: 在测试中不要使用私有的 Python 函数
  • #15250: REL: 准备 NumPy 1.18.1 版本的发布

NumPy 1.18.0 发行说明

原文:numpy.org/doc/1.26/release/1.18.0-notes.html

除了常规的错误修复外,此 NumPy 发行版还清理和文档化了新的随机 C-API,废弃了大量旧的弃用内容,并改进了文档的外观。支持的 Python 版本为 3.5-3.8。这是最后一个支持 Python 3.5 的 NumPy 发行系列。

下游开发人员应使用 Cython >= 0.29.14 以支持 Python 3.8,并使用 OpenBLAS >= 3.7 以避免在 Skylake 架构上出现问题。

亮点

  • numpy.random的 C-API 已定义和文档化。
  • 与 64 位 BLAS 和 LAPACK 库链接的基础设施。
  • 许多文档改进。

新的功能

添加了多元超几何分布到numpy.random

将方法multivariate_hypergeometric添加到类numpy.random.Generator中。此方法生成多元超几何概率分布的随机变量。(gh-13794)

弃用

np.fromfilenp.fromstring将在错误数据上报错

在未来的 numpy 发行版中,当解析错误数据时,函数np.fromfilenp.fromstring将抛出错误。这样做会产生DeprecationWarning,而以前会静默返回部分甚至无效的数据。此弃用还影响了 C 定义的函数PyArray_FromStringPyArray_FromFile (gh-13605)

弃用非标量数组作为ma.fill_value的填充值

将非标量数组设置为MaskedArray.fill_value已弃用,因为广播填充值到数组的逻辑很脆弱,特别是在切片时。(gh-13698)

弃用PyArray_As1DPyArray_As2D

弃用PyArray_As1DPyArray_As2D,使用PyArray_AsCArray替代 (gh-14036)

弃用np.alen

np.alen已被弃用。请使用len替代。(gh-14181)

弃用财务函数

根据 NEP-32 的规定,财务函数fv ipmt, irr, mirr, nper, npv, pmt, ppmt, pvrate已被弃用,并将在 NumPy 1.20 中移除。这些函数的替代品是 Python 包 numpy-financial 。(gh-14720)

numpy.ma.mask_colsnumpy.ma.mask_rowaxis参数已弃用

此参数一直被忽略。(gh-14996)

过期弃用

  • PyArray_As1DPyArray_As2D已被移除,使用PyArray_AsCArray替代 (gh-14036)
  • np.rank已被移除。这在 NumPy 1.10 中已被弃用,并已被np.ndim替代。(gh-14039)
  • expand_dims在 1.13.0 版本中废弃的超出范围轴已经过期。(gh-14051)
  • 移除PyArray_FromDimsAndDataAndDescrPyArray_FromDims(它们将始终引发错误)。使用PyArray_NewFromDescrPyArray_SimpleNew代替。(gh-14100)
  • numeric.loadsnumeric.loadnp.ma.dumpnp.ma.dumpsnp.ma.loadnp.ma.loads已被移除,使用pickle方法代替。(gh-14256)
  • 移除arrayprint.FloatFormatarrayprint.LongFloatFormat,使用FloatingFormat代替
  • 移除arrayprint.ComplexFormatarrayprint.LongComplexFormat,使用ComplexFloatingFormat代替
  • 移除arrayprint.StructureFormat,使用StructureVoidFormat代替。(gh-14259)
  • np.testing.rand已被移除。这在 NumPy 1.11 中已被弃用,并已被np.random.rand替代。(gh-14325)
  • numpy/lib/utils.py中移除SafeEval类。这在 NumPy 1.10 已被弃用。使用np.safe_eval代替。(gh-14335)
  • 移除对np.select中 boolean 和空条件列表的弃用支持。(gh-14583)
  • 数组顺序只接受’C’,‘F’,‘A’和’K’。更宽容的选项在 NumPy 1.11 中已弃用。(gh-14596)
  • np.linspace 参数num必须是整数。在 NumPy 1.12 中已弃用。(gh-14620)
  • 具有多个输出的 UFunc 必须使用元组作为out kwarg。这完成了自 NumPy 1.10 起弃用的操作。(gh-14682)

文件numpy/testing/decorators.pynumpy/testing/noseclasses.pynumpy/testing/nosetester.py已被移除。它们从未被视为公共内容(所有相关对象存在于numpy.testing名称空间中),并且自 NumPy 1.15.0 以来导入它们即已弃用(gh-14567)

兼容性说明

numpy.lib.recfunctions.drop_fields不再能返回 None

如果使用drop_fields来删除所有字段,则以前的数组将被完全丢弃并返回 None。现在它返回与输入相同形状的数组,但没有字段。旧的行为可以保留为:

代码语言:javascript复制
dropped_arr = drop_fields(arr, ['a', 'b'])
if dropped_arr.dtype.names == ():
    dropped_arr = None 

将空的 recarray 转换为 None。(gh-14510)

numpy.argmin/argmax/min/max如果在数组中存在则返回NaT

如果数组中存在 NaTnumpy.argminnumpy.argmaxnumpy.minnumpy.max 将返回 NaT。 (gh-14717)

np.can_cast(np.uint64, np.timedelta64, casting='safe') 现在为 False

以前这是 True - 但是,这与 uint64 不能安全地转换为 int64 不一致,导致类型解析出现问题。

如果这影响到您的代码,请先将 uint64 转换为 int64。 (gh-14718)

numpy.random.Generator.integers 改变了随机变量流

numpy.random.Generator.integers 存在错误,导致 8 位和 16 位整数类型的抽样有偏误。修复该错误将改变输出流,与以前版本的输出流不同。 (gh-14777)

datetime64timedelta64 添加更多的 ufunc 循环

np.datetime('NaT') 应该更像 float('Nan')。添加所需的基础设施,以便在 datetime64timedelta64 dtypes 上运行 np.isinf(a)np.isnan(a)。还为 numpy.fminnumpy.fmax 添加了特定的循环,该循环蒙版了 NaT。这可能需要调整用户代码。特别是,不允许调用 numpy.isinfnumpy.isnan 或检查它们是否引发异常的代码将需要调整,而错误调用 numpy.fmaxnumpy.fmin 而不是分别调整 numpy.maximumnumpy.minimum 的代码也需要调整。这也影响 numpy.nanmaxnumpy.nanmin。 (gh-14841)

numpy.random 中移动模块

作为 API 清理的一部分,numpy.random 中的子模块 bit_generatorphiloxpcg64sfc64, commongeneratorbounded_integers分别移动到_bit_generator_philox_pcg64_sfc64, _common_generator_bounded_integers,以指示它们不是公共接口的一部分。 (gh-14608)

C API 变更

对于结构化数据类型,PyDataType_ISUNSIZED(descr) 现在返回 False

以前对于项目大小为 0 的任何数据类型都会返回 True,但现在对于项目大小为 0 的非灵活数据类型 np.dtype([]),现在会返回 false。 (gh-14393)

新特性

添加自己的 *.pxd Cython 导入文件

添加了一个 numpy/__init__.pxd 文件。它将用于 cimport numpy (gh-12284)

可以将轴的元组输入到 expand_dims

numpy.expand_dimsaxis 关键字现在可以接受轴的元组。以前,axis 必须是整数。 (gh-14051)

对 64 位 OpenBLAS 的支持

添加对 64 位(ILP64)OpenBLAS 的支持。有关详细信息,请参见 site.cfg.example。 (gh-15012)

向 F2PY 添加了 --f2cmap 选项

允许指定从文件加载 Fortran 到 C 类型映射定制的文件。 (gh-15113)

改进

不同大小的 C 数字类型具有唯一的名称

在任何给定平台上,np.intcnp.int_np.longlong中的两个先前的无法通过其repr区分,尽管它们相应的dtype具有不同的属性。对这些类型的无符号反向部分,以及在某些平台上np.doublenp.longdouble都存在类似问题

这些类型现在总是打印带有唯一__name__。 (gh-10151)

argwhere 现在对 0 维数组产生一致的结果

在 N 维数组上,numpy.argwhere 现在总是产生一个形状为(n_non_zero, arr.ndim)的数组,即使arr.ndim == 0。在这种情况下,先前的最后一个轴将具有维度为 1。 (gh-13610)

random.permutationrandom.shuffle添加axis参数

先前的random.permutationrandom.shuffle函数只能沿着第一个轴对数组进行洗牌;现在它们有一个新的参数axis,允许沿指定轴进行洗牌。 (gh-13829)

np.random.multivariate_normalmethod关键字参数

现在为np.random.multivariate_normal添加了一个method关键字参数,可能的取值为{'svd', 'eigh', 'cholesky'}。要使用它,写成np.random.multivariate_normal(..., method=<method>)。 (gh-14197)

numpy.fromstring添加复数支持

现在 numpy.fromstring 可以读取复数。 (gh-14227)

axis不为 None 时,numpy.unique 在不同的轴上具有一致的顺序

numpy.unique中使用moveaxis而不是swapaxes,以保持除参数中的轴之外的轴的顺序不变。 (gh-14255)

numpy.matmul 的布尔输出现在转换为布尔值

调用numpy.matmul,其中输出是布尔数组,将填充数组与结果的 uint8 等效项,而不是 0/1。现在它会强制输出为 0 或 1(NPY_TRUENPY_FALSE)。 (gh-14464)

当范围为2**32时,numpy.random.randint 产生了不正确的值

在 1.17.0 中引入的实现在确定是否使用 32 位路径或完整 64 位路径时存在错误检查,错误地将具有高低范围为2**32的随机整数生成重定向到 64 位生成器。 (gh-14501)

numpy.fromfile添加复数支持

现在 numpy.fromfile 可以读取复数。 (gh-14730)

如果编译器命名为 gcc,则添加std=c99

GCC 在 5 版本之前需要-std=c99命令行参数。更新的编译器会自动打开 C99 模式。如果编译器名称中含有gcc,则编译器设置代码将自动添加该代码。(gh-14771)

改变

NaT现在按顺序排列到数组的末尾

对于排序目的,NaT现在有效地被视为最大的整数,因此其排序到数组的末尾。这种变化是为了保持与NaN排序行为的一致性。(gh-12658) (gh-15068)

np.set_printoptions中的错误threshold引发TypeErrorValueError

以前的不正确的threshold会引发ValueError;现在对于非数字类型引发TypeError,对于nan值引发ValueError。(gh-13899)

在保存带有元数据的 dtype 时发出警告

当使用numpy.save保存带有metadata的数组时,将发出UserWarning。保存这样的数组可能不会保留元数据,如果保留了元数据,则加载它将导致ValueError。这种保存和加载的缺陷将在将来的发布中解决。(gh-14142)

numpy.distutils的附加行为已更改为 LDFLAGS 和类似行为

numpy.distutils一直覆盖而不是附加到LDFLAGS和其他类似的环境变量上,用于编译 Fortran 扩展。现在默认行为已更改为附加-这是大多数情况下预期的行为。为了保留旧的(覆盖)行为,将NPY_DISTUTILS_APPEND_FLAGS环境变量设置为 0。适用于:LDFLAGSF77FLAGSF90FLAGSFREEFLAGSFOPTFDEBUGFFLAGS。在这种行为更改会影响到使用的编译标志的情况下,NumPy 1.16 和 1.17 会发出编译警告。(gh-14248)

移除numpy.random.entropy而不使用弃用

numpy.random.entropy添加到了numpy.random命名空间中 1.17.0。它原本是一个私有的 c 扩展模块,但被公开了。它已经被numpy.random.SeedSequence取代,因此该模块已完全移除。(gh-14498)

增加选项以静默构建配置并使用-Werror进行构建

添加了两个新的配置选项。在build_src子命令期间,作为配置 NumPy 的一部分,通过探测对各种运行时函数和例程的支持来创建文件_numpyconfig.hconfig.h。以前,在这个阶段,非常冗长的编译器输出会掩盖更重要的信息。默认情况下输出被静音。运行runtests.py --debug-info将在build_src子命令中添加--verbose-cfg,这将恢复以前的行为。

在配置期间将CFLAGS=-Werror添加以将警告转换为错误会触发错误。现在runtests.py --warn-error将在build子命令中添加--warn-error,这将传播到build_extbuild_lib子命令。这将在这些阶段添加编译器标志,并在构建 NumPy 本身时将编译器警告转换为错误,避免build_src子命令的编译器调用。

(gh-14527) (gh-14518)

亮点

  • 已定义和记录了numpy.random的 C-API。
  • 与 64 位 BLAS 和 LAPACK 库进行链接的基本基础设施。
  • 许多文档改进。

新函数

添加了多元超几何分布到numpy.random

已向类numpy.random.Generator添加了方法multivariate_hypergeometric。该方法从多元超几何概率分布中生成随机变量。(gh-13794)

添加了多元超几何分布到numpy.random

已向类numpy.random.Generator添加了方法multivariate_hypergeometric。该方法从多元超几何概率分布中生成随机变量。(gh-13794)

弃用

np.fromfilenp.fromstring在错误数据上将产生错误

在未来的 numpy 发布版本中,函数np.fromfilenp.fromstring将在解析错误数据时抛出错误。现在,以前部分甚至无效的数据将悄无声息地返回,而现在将产生DeprecationWarning。这种弃用还影响了 C 定义的函数PyArray_FromStringPyArray_FromFile(gh-13605)

弃用ma.fill_value中的非标量数组作为填充值

MaskedArray.fill_value设置为非标量数组已被弃用,因为广播填充值到数组的逻辑是脆弱的,特别是在切片时。 (gh-13698)

弃用PyArray_As1DPyArray_As2D

PyArray_As1DPyArray_As2D已弃用,改用PyArray_AsCArray代替(gh-14036)

弃用np.alen

弃用np.alen。使用len代替。(gh-14181)

弃用了金融函数

根据NEP-32的规定,金融函数fvipmtirrmirrnpernpvpmtppmtpvrate已被弃用,并将在 NumPy 1.20 中被移除。这些函数的替代品是 Python 包numpy-financial(gh-14720)

numpy.ma.mask_colsnumpy.ma.mask_rowaxis参数已弃用

这个参数总是被忽略的(gh-14996)

np.fromfilenp.fromstring在解析错误数据时会出错

在未来的 NumPy 版本中,当解析错误数据时,np.fromfilenp.fromstring将抛出错误。之前,部分甚至无效的数据会被悄无声息地返回。这个弃用还会影响 C 定义的函数PyArray_FromStringPyArray_FromFile(gh-13605)

弃用ma.fill_value中的非标量数组作为填充值

MaskedArray.fill_value设置为非标量数组已弃用,因为将填充值广播到数组的逻辑不稳定,特别是在切片时(gh-13698)

弃用PyArray_As1DPyArray_As2D

PyArray_As1DPyArray_As2D已弃用,请改用PyArray_AsCArray(gh-14036)

弃用np.alen

弃用np.alen,请使用len(gh-14181)

弃用金融函数

根据NEP-32的规定,金融函数fvipmtirrmirrnpernpvpmtppmtpvrate已被弃用,并将在 NumPy 1.20 中被移除。这些函数的替代品是 Python 包numpy-financial(gh-14720)

numpy.ma.mask_colsnumpy.ma.mask_rowaxis参数已弃用

这个参数总是被忽略的(gh-14996)

过期的弃用函数

  • PyArray_As1DPyArray_As2D已被移除,推荐使用PyArray_AsCArray(gh-14036)
  • np.rank已被移除。这在 NumPy 1.10 中已被弃用,并被np.ndim替代(gh-14039)
  • 在 1.13.0 中过期的对expand_dims超出范围的轴的使用已经失效(gh-14051)
  • PyArray_FromDimsAndDataAndDescrPyArray_FromDims已被移除(它们总是会触发错误)。请改用PyArray_NewFromDescrPyArray_SimpleNew(gh-14100)
  • 移除了 numeric.loads, numeric.load, np.ma.dump, np.ma.dumps, np.ma.load, np.ma.loads,请使用 pickle 方法代替 (gh-14256)
  • arrayprint.FloatFormat, arrayprint.LongFloatFormat 已被移除,使用 FloatingFormat 代替
  • arrayprint.ComplexFormat, arrayprint.LongComplexFormat 已被移除,使用 ComplexFloatingFormat 代替
  • arrayprint.StructureFormat 已被移除,使用 StructureVoidFormat 代替。(gh-14259)
  • np.testing.rand 已被移除。这在 NumPy 1.11 中已被弃用,已被 np.random.rand 替代。(gh-14325)
  • numpy/lib/utils.py 中的 SafeEval 类已被移除。这在 NumPy 1.10 中已被弃用。使用 np.safe_eval 代替。(gh-14335)
  • 移除了对 np.select 中布尔值和空条件列表的弃用支持 (gh-14583)
  • 数组顺序仅接受 ‘C’, ‘F’, ‘A’, 和 ‘K’。在 NumPy 1.11 中,更宽松的选项已被弃用。(gh-14596)
  • np.linspace 参数 num 必须是整数。在 NumPy 1.12 中已被弃用。(gh-14620)
  • 具有多个输出的 UFuncs 必须使用元组作为 out 关键字参数。这结束了在 NumPy 1.10 中开始的弃用。(gh-14682)

文件 numpy/testing/decorators.py, numpy/testing/noseclasses.pynumpy/testing/nosetester.py 已被移除。它们从未被视为公共的 (所有相关对象都在 numpy.testing 命名空间中),自 NumPy 1.15.0 以来导入它们会产生弃用警告。(gh-14567)

兼容性说明

numpy.lib.recfunctions.drop_fields 不再返回 None

如果 drop_fields 用于删除所有字段,先前数组将完全被丢弃并返回 None。现在返回与输入形状相同但没有字段的数组。旧行为可通过以下方式保持:

代码语言:javascript复制
dropped_arr = drop_fields(arr, ['a', 'b'])
if dropped_arr.dtype.names == ():
    dropped_arr = None 

将空的 recarray 转换为 None (gh-14510)

numpy.argmin/argmax/min/max 如果在数组中存在 NaT,则返回 NaT

numpy.argmin, numpy.argmax, numpy.min, 和 numpy.max 如果在数组中存在 NaT,则会返回 NaT。(gh-14717)

np.can_cast(np.uint64, np.timedelta64, casting='safe') 现在为 False

先前这是 True - 但是,这与 uint64 无法安全转换为 int64 且导致奇怪类型解析是矛盾的。

如果这影响到您的代码,请先将 uint64 转换为 int64。(gh-14718)

将随机变量流从 numpy.random.Generator.integers 改为

numpy.random.Generator.integers存在一个 bug,导致 8 位和 16 位整数类型出现偏倚抽样。修复了该 bug 后,输出流与先前版本有所不同。(gh-14777)

datetime64timedelta64添加更多的 ufunc 循环

np.datetime('NaT')的行为应更像float('Nan')。添加所需的基础设施,使得np.isinf(a)np.isnan(a)能在datetime64timedelta64 dtypes 上执行。还为numpy.fminnumpy.fmax添加了特定的循环,用于屏蔽NaT。这可能需要调整用户界面代码。具体来说,不允许对numpy.isinfnumpy.isnan的调用或检查是否引发异常的代码将需要适应,以及错误地调用numpy.fmaxnumpy.fmin而不是分别调用numpy.maximumnumpy.minimum的代码将需要调整。这也影响numpy.nanmaxnumpy.nanmin。(gh-14841)

移动了 numpy.random 中的模块

作为 API 清理的一部分,numpy.random中的子模块bit_generatorphiloxpcg64sfc64commongeneratorbounded_integers被移动到_bit_generator_philox_pcg64_sfc64_common_generator_bounded_integers,分别表示它们不是公共接口的一部分。(gh-14608)

numpy.lib.recfunctions.drop_fields 现在不会返回 None

如果使用drop_fields删除所有字段,先前数组将被完全丢弃并返回 None。现在,它返回一个与输入形状相同的数组,但没有字段。可以通过以下方式保留旧行为:

代码语言:javascript复制
dropped_arr = drop_fields(arr, ['a', 'b'])
if dropped_arr.dtype.names == ():
    dropped_arr = None 

将空的 recarray 转换为 None (gh-14510)

numpy.argmin/argmax/min/max如果数组中存在NaT,则返回NaT

如果数组中存在NaTnumpy.argminnumpy.argmaxnumpy.minnumpy.max 将返回NaT。 (gh-14717)

np.can_cast(np.uint64, np.timedelta64, casting='safe')现在为False

先前为True - 但这与 uint64 无法安全转换为 int64 是不一致的,导致奇怪的类型解析。

如果这影响了你的代码,先将uint64转换为int64。(gh-14718)

改变了从numpy.random.Generator.integers的随机变量流

numpy.random.Generator.integers存在一个 bug,导致 8 位和 16 位整数类型出现偏倚抽样。修复了该 bug 后,输出流与先前版本有所不同。(gh-14777)

datetime64timedelta64添加更多的 ufunc 循环

np.datetime('NaT')现在应该更像float('Nan')。添加所需的基础设施,使得np.isinf(a)np.isnan(a)可以在datetime64timedelta64数据类型上运行。还为numpy.fminnumpy.fmax添加了特定的循环,用于屏蔽NaT。这可能需要调整用户端的代码。特别是,不允许调用numpy.isinfnumpy.isnan的代码或检查它们是否引发异常的代码将需要适应,而错误地调用numpy.fmaxnumpy.fmin而不是numpy.maximumnumpy.minimum的代码将需要调整。这也影响到了numpy.nanmaxnumpy.nanmin。 (gh-14841)

移动了numpy.random中的模块

作为 API 清理的一部分,numpy.random中的子模块bit_generatorphiloxpcg64sfc64,commongeneratorbounded_integers被移动到分别指示它们不是公共接口的_bit_generator_philox_pcg64_sfc64, _common, _generator_bounded_integers。 (gh-14608)

C API 更改

PyDataType_ISUNSIZED(descr)现在对于结构化数据类型返回 False

以前这个对 itemsize 为 0 的任何数据类型都返回 True,但现在对于 itemsize 为 0 的非灵活数据类型np.dtype([])返回 false。 (gh-14393)

PyDataType_ISUNSIZED(descr)现在对于结构化数据类型返回 False

以前这个对 itemsize 为 0 的任何数据类型都返回 True,但现在对于 itemsize 为 0 的非灵活数据类型np.dtype([])返回 false。 (gh-14393)

新特性

添加我们自己的*.pxd Cython 导入文件

添加了一个numpy/__init__.pxd文件。这将用于cimport numpy (gh-12284)

一个轴的元组现在可以输入到expand_dims

numpy.expand_dimsaxis关键字现在可以接受一个轴的元组。以前,axis必须是一个整数。 (gh-14051)

对 64 位 OpenBLAS 的支持

添加对 64 位(ILP64)OpenBLAS 的支持。详细信息请参见site.cfg.example。 (gh-15012)

添加--f2cmap选项到 F2PY

允许指定一个文件来加载从 Fortran 到 C 类型映射的定制。 (gh-15113)

添加我们自己的*.pxd Cython 导入文件

添加了一个numpy/__init__.pxd文件。这将用于cimport numpy (gh-12284)

一个轴的元组现在可以输入到expand_dims

numpy.expand_dimsaxis关键字现在可以接受一个轴的元组。以前,axis必须是一个整数。 (gh-14051)

对 64 位 OpenBLAS 的支持

添加对 64 位(ILP64)OpenBLAS 的支持。详细信息请参见site.cfg.example。 (gh-15012)

为 F2PY 添加 --f2cmap 选项

允许从文件加载 Fortran-to-C 类型映射的定制。 (gh-15113)

改进

相同大小的不同 C 数值类型具有独特的名称

在任何给定的平台上, 通过它们的 reprnp.intcnp.int_np.longlong 三者以前都难以区分,尽管它们相应的 dtype 有不同的特性。 与这些类型的无符号对应物也存在类似问题,在某些平台上也存在 np.doublenp.longdouble 的问题。

这些类型现在总是以唯一的 __name__ 打印。 (gh-10151)

argwhere 现在在 0d 数组上产生一致的结果

对于 N-d 数组,numpy.argwhere 现在总是产生形状为 (n_non_zero, arr.ndim) 的数组,即使 arr.ndim == 0 也是如此。 在这种情况下,以前的最后一个轴将具有一个维度为 1。 (gh-13610)

random.permutationrandom.shuffle 添加 axis 参数

以前 random.permutationrandom.shuffle 函数只能沿着第一个轴进行洗牌;现在它们有一个新的 axis 参数,允许沿指定轴进行洗牌。 (gh-13829)

np.random.multivariate_normalmethod 关键字参数

现在 np.random.multivariate_normal 有一个可用的 method 关键字参数,可能的取值为 {'svd', 'eigh', 'cholesky'}。 要使用它,写成 `np.random.multivariate_normal(…, method=)。 (gh-14197)

numpy.fromstring 添加支持复数的功能

现在 numpy.fromstring 可以读取复数。 (gh-14227)

axis 不为 None 时,numpy.unique 有一致的轴的顺序

numpy.unique 中使用 moveaxis 代替 swapaxes,这样除了参数中的轴之外的轴的顺序就不会被破坏。 (gh-14255)

numpy.matmul 现在转换为布尔值的输出

在调用 numpy.matmul 并且输出是布尔数组时,它会将数组填充为结果的 uint8 等效值,而不是 0/1。现在它强制输出为 0 或 1(NPY_TRUENPY_FALSE)。 (gh-14464)

当范围为2**32时,numpy.random.randint 生成了错误的值

在确定是否使用 32 位路径还是完整 64 位路径时,引入于 1.17.0 的实现存在错误的检查,错误地将范围为 2**32 的高低范围的随机整数生成重定向到 64 位生成器。 (gh-14501)

numpy.fromfile 添加支持复数的功能

现在 numpy.fromfile 可以读取复数。 (gh-14730)

如果编译器命名为 gcc,则添加 std=c99

GCC 在 5 版之前需要-std=c99命令行参数。更新的编译器会自动打开 C99 模式。如果编译器名称中带有gcc,则编译器设置代码将自动添加该代码。(gh-14771)

相同大小的不同 C 数字类型具有唯一名称

在任何平台上,np.intcnp.int_np.longlong中的两个以前通过repr看起来一样,尽管它们对应的dtype具有不同的属性。它们的无符号对应类型存在类似的问题,以及在某些平台上对于np.doublenp.longdouble

这些类型现在始终具有唯一的__name__。(gh-10151)

argwhere现在在 0d 数组上产生一致的结果

在 N 维数组上,numpy.argwhere现在总是产生形状为(n_non_zero,arr.ndim)的数组,即使arr.ndim == 0。在这种情况下,以前,最后一个轴的维度是 1。(gh-13610)

random.permutationrandom.shuffle添加axis参数

以前,random.permutationrandom.shuffle函数只能沿着第一个轴对数组进行洗牌,现在它们有一个新的axis参数,允许沿指定轴进行洗牌。(gh-13829)

np.random.multivariate_normalmethod关键字参数

np.random.multivariate_normal现在具有method关键字参数,可能的值为{'svd','eigh','cholesky'}。 要使用它,请写np.random.multivariate_normal(...,method=<method>)。(gh-14197)

numpy.fromstring添加支持复数

现在numpy.fromstring可以读取复数。(gh-14227)

axis不是 None 时,numpy.unique具有一致的轴顺序

numpy.unique中使用moveaxis而不是swapaxes,以保持参数中除指定轴外的轴的顺序不被破坏。(gh-14255)

具有布尔输出的numpy.matmul现在转换为布尔值

调用numpy.matmul时,如果输出是布尔数组,则会用结果的 uint8 等价物来填充数组,而不是 0/1。现在它会强制输出为 0 或 1(NPY_TRUENPY_FALSE)。(gh-14464)

当范围为2**32时,numpy.random.randint生成的值不正确

在 1.17.0 引入的实现中,在确定是否使用 32 位路径或完整 64 位路径时存在错误检查,将具有高低范围为2**32的随机整数生成不正确地重定向到 64 位生成器。(gh-14501)

numpy.fromfile添加复数支持

现在numpy.fromfile可以读取复数。(gh-14730)

如果编译器名称为gcc,则添加std=c99

GCC 版本 5 之前需要使用-std=c99命令行参数。更新的编译器会自动打开 C99 模式。如果编译器名称中含有gcc,编译器设置代码将自动添加此代码。(gh-14771)

变动

NaT现在在数组的末尾排序

NaT现在在排序中被有效地当作最大的整数处理,因此它将排在数组的末尾。这个更改是为了与NaN的排序行为保持一致。(gh-12658) (gh-15068)

np.set_printoptions中的不正确的threshold会引发TypeErrorValueError

先前的不正确的threshold引发ValueError;现在对于非数字类型引发TypeError,对于nan值引发ValueError。(gh-13899)

当保存带有元数据的数组时发出警告

当通过numpy.save保存数组时,如果使用metadata,将会发出UserWarning。保存这样的数组可能不会保留元数据,如果保留,加载它将导致ValueError。这个保存和加载的不足之处将在未来的版本中得到解决。(gh-14142)

numpy.distutils附加行为对于 LDFLAGS 和类似的变化

numpy.distutils一直重写而不是附加LDFLAGS和其他类似的编译 Fortran 扩展的环境变量。现在默认行为已更改为追加 - 这在大多数情况下是预期的行为。为保留旧的(覆盖)行为,将NPY_DISTUTILS_APPEND_FLAGS环境变量设置为 0。这适用于:LDFLAGSF77FLAGSF90FLAGSFREEFLAGSFOPTFDEBUGFFLAGS。NumPy 1.16 和 1.17 在这种行为改变会影响到使用的编译标志时会发出构建警告。(gh-14248)

移除numpy.random.entropy而不进行过时警告

numpy.random.entropynumpy.random命名空间中在 1.17.0 版本中被加入。它原本是一个私有的 C 扩展模块,但被公开了。它已被numpy.random.SeedSequence替换,因此该模块被完全移除。(gh-14498)

增加选项以安静地构建配置,并使用-Werror进行构建

增加了两个新的配置选项。在build_src子命令期间,在配置 NumPy 的过程中,通过探测对各种运行时函数和例程的支持来创建文件_numpyconfig.hconfig.h。此前,在这个阶段非常冗长的编译器输出淹没了更重要的信息。默认情况下,输出被消除了。运行runtests.py --debug-info将会在build_src子命令中添加--verbose-cfg,这将恢复先前的行为。

CFLAGS=-Werror添加到配置中将会触发错误。现在runtests.py --warn-error将会在build子命令中添加--warn-error,这将传递到build_extbuild_lib子命令。这将在构建 NumPy 本身时将编译警告转换为错误,避免了build_src子命令的编译调用。

(gh-14527) (gh-14518)

NaT现在排序到数组的末尾

NaT现在在排序目的上有效地被视为最大的整数,因此它将排序到数组的末尾。这一改变是为了与NaN的排序行为保持一致。 (gh-12658) (gh-15068)

np.set_printoptions中的threshold不正确,会引发TypeErrorValueError

以前,一个不正确的threshold引发了ValueError;现在对于非数值类型引发TypeError,对于nan值引发ValueError。 (gh-13899)

在保存带有元数据的 dtype 时发出警告

当通过numpy.save保存数组时带有metadata时,将发出UserWarning。保存这样的数组可能不会保留元数据,如果保留了元数据,加载它将导致ValueError。此保存和加载的不足将在将来的版本中得到解决。 (gh-14142)

numpy.distutils的追加行为对 LDFLAGS 和类似的环境变量发生了变化

numpy.distutils一直覆盖而不是追加LDFLAGS和其他类似的环境变量用于编译 Fortran 扩展。现在默认行为已更改为追加 - 这在大多数情况下是预期行为。为了保留旧的(覆盖)行为,请将NPY_DISTUTILS_APPEND_FLAGS环境变量设置为 0。这适用于:LDFLAGSF77FLAGSF90FLAGSFREEFLAGSFOPTFDEBUGFFLAGS。在 NumPy 1.16 和 1.17 中,如果此行为的变化会影响使用的编译标志,将会出现构建警告。 (gh-14248)

删除了未经废弃的numpy.random.entropy

numpy.random.entropy在 1.17.0 版本中添加到了numpy.random命名空间中。它原本是一个私有的 c 扩展模块,但被暴露为公共的。它已被numpy.random.SeedSequence替换,因此该模块被完全移除了。 (gh-14498)

增加选项以安静地构建配置并用-Werror进行构建

添加了两个新的配置选项。在build_src子命令期间,作为配置 NumPy 的一部分,通过探测对各种运行时函数和例程的支持,创建了文件_numpyconfig.hconfig.h。先前,此阶段的非常冗长的编译器输出淹没了更重要的信息。默认情况下输出被压制。运行runtests.py --debug-info将在build_src子命令中添加--verbose-cfg,这将恢复先前的行为。

添加CFLAGS=-Werror以将警告转换为错误会在配置过程中触发错误。现在,runtests.py --warn-error将在build子命令中添加--warn-error,这将向build_extbuild_lib子命令渗透。这将在这些阶段添加编译器标志,并在实际构建 NumPy 本身时将编译器警告转换为错误,避免build_src子命令的编译器调用。

(gh-14527) (gh-14518)

0 人点赞