前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NumPy 1.26 中文文档(五十九)

NumPy 1.26 中文文档(五十九)

作者头像
ApacheCN_飞龙
发布2024-07-26 10:01:29
250
发布2024-07-26 10:01:29
举报
文章被收录于专栏:信数据得永生

原文: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_FromFilegh-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-financialgh-14720

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

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

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

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

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

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

弃用PyArray_As1DPyArray_As2D

PyArray_As1DPyArray_As2D已弃用,请改用PyArray_AsCArraygh-14036

弃用np.alen

弃用np.alen,请使用lengh-14181

弃用金融函数

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

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

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

过期的弃用函数

  • PyArray_As1DPyArray_As2D已被移除,推荐使用PyArray_AsCArraygh-14036
  • np.rank已被移除。这在 NumPy 1.10 中已被弃用,并被np.ndim替代(gh-14039
  • 在 1.13.0 中过期的对expand_dims超出范围的轴的使用已经失效(gh-14051
  • PyArray_FromDimsAndDataAndDescrPyArray_FromDims已被移除(它们总是会触发错误)。请改用PyArray_NewFromDescrPyArray_SimpleNewgh-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)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NumPy 1.19.5 发布说明
    • 贡献者
      • 合并的拉取请求
        • 贡献者
          • 合并的拉取请求
          • NumPy 1.19.4 发布说明
            • 贡献者
              • 已合并的拉取请求
                • 贡献者
                  • 已合并的拉取请求
                  • NumPy 1.19.3 发布说明
                    • 贡献者
                      • 合并的拉取请求
                        • 贡献者
                          • 合并的拉取请求
                          • NumPy 1.19.2 发布说明
                            • 改进
                              • 为 Cython 3.0 及更高版本添加 NumPy 声明
                            • 贡献者
                              • 已合并的拉取请求
                                • 改进
                                  • 为 Cython 3.0 及更高版本添加 NumPy 声明
                                  • 为 Cython 3.0 及更高版本添加 NumPy 声明
                                • 贡献者
                                  • 合并的拉取请求
                                  • NumPy 1.19.1 发布说明
                                    • Contributors
                                      • 合并的拉取请求
                                        • 贡献者
                                          • 已合并的拉取请求
                                          • NumPy 1.19.0 发布说明
                                            • 亮点
                                              • 弃用已过期
                                                • numpy.insert 和 numpy.delete 在 0d 数组上不能再传递 axis。
                                                • numpy.delete 不再忽略超出范围的索引
                                                • numpy.insert 和 numpy.delete 不再接受非整数索引
                                                • numpy.delete不再将布尔索引转换为整数
                                              • 兼容性说明
                                                • 从numpy.random.Generator.dirichlet更改随机变量流
                                                • 在PyArray_ConvertToCommonType中的标量提升
                                                • Fasttake 和 fastputmask 插槽已经被弃用并且设为 NULL
                                                • np.ediff1d 通过使用 to_end 和 to_begin 参数的转换行为
                                                • 将空数组对象转换为 NumPy 数组
                                                • 移除 multiarray.int_asbuffer
                                                • 已移除 numpy.distutils.compat
                                                • issubdtype 不再将float解释为np.floating。
                                                • 更改标量的round的输出,以使其与 Python 一致
                                                • numpy.ndarray 构造函数不再将strides=()解释为strides=None。
                                                • C 级别的字符串到日期时间的转换发生了变化
                                                • 具有小种子的SeedSequence不再与生成冲突
                                              • 弃用
                                                • 弃用对不规则输入的自动dtype=object
                                                • 在numpy.rec的工厂函数中传递shape=0已弃用。
                                                • 废弃了可能未被使用的 C-API 函数
                                                • 转换特定类型到 dtypes 被废弃
                                                • 废弃了 np.complexfloating 标量的 round
                                                • numpy.ndarray.tostring() 被废弃,建议使用 tobytes()
                                              • C API 的变更
                                                • 对 API 函数中的 const 维度提供更好的支持
                                                • 修饰 UFunc 的内循环
                                              • 新特性
                                                • 现在 numpy.frompyfunc 接受一个 identity 参数
                                                • np.str_标量现在支持缓冲区协议。
                                                • 为numpy.copy添加了subok选项。
                                                • numpy.linalg.multi_dot现在接受out参数。
                                                • numpy.count_nonzero的keepdims参数。
                                                • numpy.array_equal的equal_nan参数。
                                              • 改进
                                                • 改进 CPU 功能的检测。
                                                  • 在后备 lapack_lite 中在 64 位平台上使用 64 位整数大小。
                                                  • 在输入为np.float64时,使用 AVX512 内在函数来实现np.exp。
                                                  • 禁用 madvise 巨大页的能力
                                                  • numpy.einsum 接受 NumPy int64 类型的下标列表
                                                  • np.logaddexp2.identity 更改为 -inf
                                                • 变更
                                                  • 删除对 __array__ 的额外参数处理
                                                  • numpy.random._bit_generator 移动到 numpy.random.bit_generator
                                                  • 通过一个 pxd 文件提供 Cython 对随机分布的访问权限
                                                  • 修复了 numpy.random.multivariate_normal 中的 eigh 和 cholesky 方法
                                                  • 修复了 MT19937.jumped 中的跳转实现
                                                • 高亮内容
                                                  • 弃用已过期
                                                    • 无法再向numpy.insert和numpy.delete传递 0d 数组的轴
                                                    • numpy.delete不再忽略超出范围的索引
                                                    • numpy.insert和numpy.delete不再接受非整数索引
                                                    • numpy.delete不再将布尔索引转换为整数
                                                    • 无法再向numpy.insert和numpy.delete传递 0d 数组的轴
                                                    • numpy.delete不再忽略超出范围的索引
                                                    • numpy.insert和numpy.delete不再接受非整数索引
                                                    • numpy.delete不再将布尔索引转换为整数
                                                  • 兼容性注意事项
                                                    • 将随机变量流从numpy.random.Generator.dirichlet更改
                                                    • PyArray_ConvertToCommonType中的标量提升
                                                    • 快速获取和快速放置掩码插槽已弃用并置空
                                                    • np.ediff1d与to_end 和 to_begin的转换行为
                                                    • 将空的类数组对象转换为 NumPy 数组
                                                    • 删除了multiarray.int_asbuffer
                                                    • numpy.distutils.compat已被移除
                                                    • issubdtype 不再解释float为np.floating
                                                    • 更改对标量的round输出,以使其与 Python 一致
                                                    • numpy.ndarray构造函数不再将strides=()解释为strides=None
                                                    • C 级字符串到日期时间的转换已更改
                                                    • 具有小种子的SeedSequence不再与生成冲突
                                                    • 从numpy.random.Generator.dirichlet更改随机变量流
                                                    • 在PyArray_ConvertToCommonType中的标量提升
                                                    • fasttake和fastputmask槽已弃用并已设置为NULL
                                                    • np.ediff1d与to_end和to_begin的类型转换行为
                                                    • 将类似空数组对象转换为 NumPy 数组
                                                    • 移除了multiarray.int_asbuffer
                                                    • numpy.distutils.compat已被移除
                                                    • issubdtype不再将float解释为np.floating
                                                    • 将标量的round输出更改为与 Python 一致
                                                    • numpy.ndarray构造函数不再将strides=()解释为strides=None
                                                    • C 级字符串到日期时间的转换已更改
                                                    • SeedSequence具有小种子将不再与生成发生冲突
                                                  • 弃用
                                                    • 弃用对不规则输入的自动dtype=object
                                                    • 向numpy.rec的工厂函数传递shape=0已被弃用
                                                    • 弃用的可能未使用的 C-API 函数
                                                    • 转换某些类型到数据类型已经过时
                                                    • 废弃round用于np.complexfloating标量
                                                    • numpy.ndarray.tostring()已被废弃,推荐使用tobytes()代替
                                                    • 废弃对不规则输入自动使用dtype=object
                                                    • 传递shape=0给numpy.rec中的工厂函数已经被废弃
                                                    • 废弃可能未被使用的 C-API 函数
                                                    • 转换特定类型为 dtypes 已被废弃
                                                    • 废弃round用于np.complexfloating标量
                                                    • numpy.ndarray.tostring()已被废弃,推荐使用tobytes()代替
                                                  • C API 变更
                                                    • Better support for const dimensions in API functions
                                                    • Const qualify UFunc inner loops
                                                    • Better support for const dimensions in API functions
                                                    • Const qualify UFunc inner loops
                                                  • 新功能
                                                    • numpy.frompyfunc现在接受一个 identity 参数
                                                    • np.str_标量现在支持缓冲区协议
                                                    • subok选项用于numpy.copy
                                                    • numpy.linalg.multi_dot现在接受一个out参数
                                                    • numpy.count_nonzero的keepdims参数
                                                    • numpy.array_equal的equal_nan参数
                                                    • numpy.frompyfunc现在接受一个 identity 参数
                                                    • np.str_标量现在支持缓冲协议
                                                    • numpy.copy的subok选项
                                                    • numpy.linalg.multi_dot现在接受一个out参数
                                                    • 对numpy.count_nonzero 添加了 keepdims 参数
                                                    • numpy.array_equal 的 equal_nan 参数
                                                  • 改进
                                                    • 改进 CPU 特性的检测
                                                      • 在 64 位平台上使用 64 位整数大小作为后备 lapack_lite
                                                      • 当输入为 np.float64 时,使用 AVX512 内在来实现 np.exp
                                                      • 禁用 madvise 大页的能力
                                                      • numpy.einsum 在下标列表中接受 NumPy int64 类型
                                                      • np.logaddexp2.identity 改变为 -inf
                                                      • 在 64 位平台上使用 64 位整数大小作为后备 lapack_lite
                                                      • 当输入为 np.float64 时,使用 AVX512 内在函数实现 np.exp
                                                      • 禁用 madvise hugepages 的能力
                                                      • numpy.einsum 在下标列表中接受 NumPy int64 类型
                                                      • np.logaddexp2.identity 更改为-inf
                                                    • 变化
                                                      • 删除对__array__的额外参数处理
                                                      • numpy.random._bit_generator 移至 numpy.random.bit_generator
                                                      • 经由pxd文件提供对随机分布的 Cython 访问
                                                      • 修复了numpy.random.multivariate_normal中的eigh和cholesky方法
                                                      • 修复了MT19937.jumped中的跳转实现
                                                      • 移除对__array__的额外参数的处理
                                                      • numpy.random._bit_generator 移动到 numpy.random.bit_generator
                                                      • Cython 通过pxd文件提供对随机分布的访问
                                                      • 修复了numpy.random.multivariate_normal中的eigh和cholesky方法
                                                      • 修复了MT19937.jumped中的跳跃实现
                                                  • NumPy 1.18.5 版本发布说明
                                                    • 贡献者
                                                      • 已合并的拉取请求
                                                        • 贡献者
                                                          • 已合并的拉取请求
                                                          • NumPy 1.18.4 Release Notes
                                                            • 贡献者
                                                              • 已合并的拉取请求
                                                                • 贡献者
                                                                  • 已合并的拉取请求
                                                                  • NumPy 1.18.3 版本说明
                                                                    • 亮点
                                                                      • 贡献者
                                                                        • 合并的拉取请求
                                                                          • 亮点
                                                                            • 贡献者
                                                                              • 合并的拉取请求
                                                                              • NumPy 1.18.2 发行说明
                                                                                • 贡献者
                                                                                  • 合并的拉取请求
                                                                                    • 贡献者
                                                                                      • 合并的拉取请求
                                                                                      • NumPy 1.18.1 发布说明
                                                                                        • 贡献者
                                                                                          • 已处理的拉取请求
                                                                                            • 贡献者
                                                                                              • 已处理的拉取请求
                                                                                              • NumPy 1.18.0 发行说明
                                                                                                • 亮点
                                                                                                  • 新的功能
                                                                                                    • 添加了多元超几何分布到numpy.random
                                                                                                  • 弃用
                                                                                                    • np.fromfile和np.fromstring将在错误数据上报错
                                                                                                    • 弃用非标量数组作为ma.fill_value的填充值
                                                                                                    • 弃用PyArray_As1D,PyArray_As2D
                                                                                                    • 弃用np.alen
                                                                                                    • 弃用财务函数
                                                                                                    • numpy.ma.mask_cols和numpy.ma.mask_row的axis参数已弃用
                                                                                                  • 过期弃用
                                                                                                    • 兼容性说明
                                                                                                      • numpy.lib.recfunctions.drop_fields不再能返回 None
                                                                                                      • numpy.argmin/argmax/min/max如果在数组中存在则返回NaT
                                                                                                      • np.can_cast(np.uint64, np.timedelta64, casting='safe') 现在为 False
                                                                                                      • 从 numpy.random.Generator.integers 改变了随机变量流
                                                                                                      • 为 datetime64、timedelta64 添加更多的 ufunc 循环
                                                                                                      • 在 numpy.random 中移动模块
                                                                                                    • C API 变更
                                                                                                      • 对于结构化数据类型,PyDataType_ISUNSIZED(descr) 现在返回 False
                                                                                                    • 新特性
                                                                                                      • 添加自己的 *.pxd Cython 导入文件
                                                                                                      • 可以将轴的元组输入到 expand_dims
                                                                                                      • 对 64 位 OpenBLAS 的支持
                                                                                                      • 向 F2PY 添加了 --f2cmap 选项
                                                                                                    • 改进
                                                                                                      • 不同大小的 C 数字类型具有唯一的名称
                                                                                                      • argwhere 现在对 0 维数组产生一致的结果
                                                                                                      • 为random.permutation和random.shuffle添加axis参数
                                                                                                      • np.random.multivariate_normal的method关键字参数
                                                                                                      • 为numpy.fromstring添加复数支持
                                                                                                      • 当axis不为 None 时,numpy.unique 在不同的轴上具有一致的顺序
                                                                                                      • numpy.matmul 的布尔输出现在转换为布尔值
                                                                                                      • 当范围为2**32时,numpy.random.randint 产生了不正确的值
                                                                                                      • 为numpy.fromfile添加复数支持
                                                                                                      • 如果编译器命名为 gcc,则添加std=c99
                                                                                                    • 改变
                                                                                                      • NaT现在按顺序排列到数组的末尾
                                                                                                      • np.set_printoptions中的错误threshold引发TypeError或ValueError
                                                                                                      • 在保存带有元数据的 dtype 时发出警告
                                                                                                      • numpy.distutils的附加行为已更改为 LDFLAGS 和类似行为
                                                                                                      • 移除numpy.random.entropy而不使用弃用
                                                                                                      • 增加选项以静默构建配置并使用-Werror进行构建
                                                                                                    • 亮点
                                                                                                      • 新函数
                                                                                                        • 添加了多元超几何分布到numpy.random
                                                                                                        • 添加了多元超几何分布到numpy.random
                                                                                                      • 弃用
                                                                                                        • np.fromfile和np.fromstring在错误数据上将产生错误
                                                                                                        • 弃用ma.fill_value中的非标量数组作为填充值
                                                                                                        • 弃用PyArray_As1D,PyArray_As2D
                                                                                                        • 弃用np.alen
                                                                                                        • 弃用了金融函数
                                                                                                        • numpy.ma.mask_cols和numpy.ma.mask_row的axis参数已弃用
                                                                                                        • np.fromfile和np.fromstring在解析错误数据时会出错
                                                                                                        • 弃用ma.fill_value中的非标量数组作为填充值
                                                                                                        • 弃用PyArray_As1D、PyArray_As2D
                                                                                                        • 弃用np.alen
                                                                                                        • 弃用金融函数
                                                                                                        • numpy.ma.mask_cols和numpy.ma.mask_row的axis参数已弃用
                                                                                                      • 过期的弃用函数
                                                                                                        • 兼容性说明
                                                                                                          • numpy.lib.recfunctions.drop_fields 不再返回 None
                                                                                                          • numpy.argmin/argmax/min/max 如果在数组中存在 NaT,则返回 NaT
                                                                                                          • np.can_cast(np.uint64, np.timedelta64, casting='safe') 现在为 False
                                                                                                          • 将随机变量流从 numpy.random.Generator.integers 改为
                                                                                                          • 为datetime64、timedelta64添加更多的 ufunc 循环
                                                                                                          • 移动了 numpy.random 中的模块
                                                                                                          • numpy.lib.recfunctions.drop_fields 现在不会返回 None
                                                                                                          • numpy.argmin/argmax/min/max如果数组中存在NaT,则返回NaT
                                                                                                          • np.can_cast(np.uint64, np.timedelta64, casting='safe')现在为False
                                                                                                          • 改变了从numpy.random.Generator.integers的随机变量流
                                                                                                          • 为datetime64、timedelta64添加更多的 ufunc 循环
                                                                                                          • 移动了numpy.random中的模块
                                                                                                        • C API 更改
                                                                                                          • PyDataType_ISUNSIZED(descr)现在对于结构化数据类型返回 False
                                                                                                          • PyDataType_ISUNSIZED(descr)现在对于结构化数据类型返回 False
                                                                                                        • 新特性
                                                                                                          • 添加我们自己的*.pxd Cython 导入文件
                                                                                                          • 一个轴的元组现在可以输入到expand_dims
                                                                                                          • 对 64 位 OpenBLAS 的支持
                                                                                                          • 添加--f2cmap选项到 F2PY
                                                                                                          • 添加我们自己的*.pxd Cython 导入文件
                                                                                                          • 一个轴的元组现在可以输入到expand_dims
                                                                                                          • 对 64 位 OpenBLAS 的支持
                                                                                                          • 为 F2PY 添加 --f2cmap 选项
                                                                                                        • 改进
                                                                                                          • 相同大小的不同 C 数值类型具有独特的名称
                                                                                                          • argwhere 现在在 0d 数组上产生一致的结果
                                                                                                          • 为 random.permutation 和 random.shuffle 添加 axis 参数
                                                                                                          • np.random.multivariate_normal 的 method 关键字参数
                                                                                                          • 为 numpy.fromstring 添加支持复数的功能
                                                                                                          • 当 axis 不为 None 时,numpy.unique 有一致的轴的顺序
                                                                                                          • numpy.matmul 现在转换为布尔值的输出
                                                                                                          • 当范围为2**32时,numpy.random.randint 生成了错误的值
                                                                                                          • 为 numpy.fromfile 添加支持复数的功能
                                                                                                          • 如果编译器命名为 gcc,则添加 std=c99
                                                                                                          • 相同大小的不同 C 数字类型具有唯一名称
                                                                                                          • argwhere现在在 0d 数组上产生一致的结果
                                                                                                          • 为random.permutation和random.shuffle添加axis参数
                                                                                                          • np.random.multivariate_normal的method关键字参数
                                                                                                          • 为numpy.fromstring添加支持复数
                                                                                                          • 当axis不是 None 时,numpy.unique具有一致的轴顺序
                                                                                                          • 具有布尔输出的numpy.matmul现在转换为布尔值
                                                                                                          • 当范围为2**32时,numpy.random.randint生成的值不正确
                                                                                                          • 为numpy.fromfile添加复数支持
                                                                                                          • 如果编译器名称为gcc,则添加std=c99
                                                                                                        • 变动
                                                                                                          • NaT现在在数组的末尾排序
                                                                                                          • np.set_printoptions中的不正确的threshold会引发TypeError或ValueError
                                                                                                          • 当保存带有元数据的数组时发出警告
                                                                                                          • numpy.distutils附加行为对于 LDFLAGS 和类似的变化
                                                                                                          • 移除numpy.random.entropy而不进行过时警告
                                                                                                          • 增加选项以安静地构建配置,并使用-Werror进行构建
                                                                                                          • NaT现在排序到数组的末尾
                                                                                                          • np.set_printoptions中的threshold不正确,会引发TypeError或ValueError
                                                                                                          • 在保存带有元数据的 dtype 时发出警告
                                                                                                          • numpy.distutils的追加行为对 LDFLAGS 和类似的环境变量发生了变化
                                                                                                          • 删除了未经废弃的numpy.random.entropy
                                                                                                          • 增加选项以安静地构建配置并用-Werror进行构建
                                                                                                      相关产品与服务
                                                                                                      持续集成
                                                                                                      CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                                                                                                      领券
                                                                                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档