NumPy-1-26-中文文档-二十五-

NumPy 1.26 中文文档(二十五)

原文:numpy.org/doc/

NumPy 1.24.3 发布说明

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

NumPy 1.24.3 是一个维护版本,修复了在 1.24.2 版本发布后发现的错误和回归问题。此版本支持的 Python 版本为 3.8-3.11。

贡献者

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

  • Aleksei Nikiforov +

  • Alexander Heger

  • Bas van Beek

  • Bob Eldering

  • Brock Mendel

  • Charles Harris

  • Kyle Sunden

  • Peter Hawkins

  • Rohit Goswami

  • Sebastian Berg

  • Warren Weckesser

  • dependabot[bot]

合并的拉取请求

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

  • #23206: BUG: 修复 f2py 字符串标量的问题(#23194)

  • #23207: BUG: datetime64/timedelta64 比较返回 NotImplemented

  • #23208: MAINT: 为 refguide 检查将 matplotlib 固定到版本 3.6.3

  • #23221: DOC: 修复文档中的 matplotlib 错误

  • #23226: CI: 确保在 gitpod 中初始化子模块

  • #23341: TYP: 用 reduceat 替换 ufunc 类型签名中的重复 reduce

  • #23342: TYP: 移除__init__.pyi中重复的 CLIP/WRAP/RAISE

  • #23343: TYP: 将 fftreq 和 rfftfreq 的d参数标记为可选…

  • #23344: TYP: 为 MaskedArray 的比较运算符添加类型注解

  • #23345: TYP: 移除msort的一些杂项类型检查导入

  • #23370: BUG: 确保like=分发函数只对like进行剥离

  • #23543: BUG: 修复在 s390x 上加载和存储大数组的问题

  • #23544: MAINT: 升级 larsoner/circleci-artifacts-redirector-action

  • #23634: BUG: 忽略掩码设置中的无效和溢出警告

  • #23635: BUG: 修复当order="A"order="K"时掩码数组的展平问题

  • #23636: MAINT: 更新 conftest 以适应更新的 hypothesis 版本

  • #23637: BUG: 修复解析 F77 风格字符串数组中的错误

贡献者

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

  • Aleksei Nikiforov +

  • Alexander Heger

  • Bas van Beek

  • Bob Eldering

  • Brock Mendel

  • Charles Harris

  • Kyle Sunden

  • Peter Hawkins

  • Rohit Goswami

  • Sebastian Berg

  • Warren Weckesser

  • dependabot[bot]

合并的拉取请求

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

  • #23206: BUG: 修复 f2py 字符串标量的问题 (#23194)

  • #23207: BUG: datetime64/timedelta64 比较返回 NotImplemented

  • #23208: MAINT: 将 matplotlib 固定到版本 3.6.3 以进行 refguide 检查

  • #23221: DOC: 修复文档中的 matplotlib 错误

  • #23226: CI: 确保在 gitpod 中初始化子模块

  • #23341: TYP: 用 reduceat 替换 ufunc 类型签名中的重复 reduce

  • #23342: TYP: 在 __init__.pyi 中移除重复的 CLIP/WRAP/RAISE

  • #23343: TYP: 将 fftfreq 和 rfftfreq 的 d 参数标记为可选…

  • #23344: TYP: 为 MaskedArray 的比较运算符添加类型注解

  • #23345: TYP: 移除一些零散的仅用于类型检查的msort导入

  • #23370: BUG: 确保 like= 分发函数仅对 like 进行剥离

  • #23543: BUG: 修复在 s390x 上加载和存储大数组的问题

  • #23544: MAINT: 升级 larsoner/circleci-artifacts-redirector-action

  • #23634: BUG: 忽略掩码设置中的无效和溢出警告

  • #23635: BUG: 修复掩码数组在 order="A"order="K" 时的展平问题

  • #23636: MAINT: 更新 conftest 以适配更新的 hypothesis 版本

  • #23637: BUG: 修复解析 F77 风格字符串数组的 bug

NumPy 1.24.2 发布说明

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

NumPy 1.24.2 是一个维护版本,修复了在 1.24.1 发布后发现的错误和回归问题。本次发布支持的 Python 版本为 3.8-3.11。

贡献者

本次发布共有 14 位贡献者。名字后带有“+”的人第一次贡献了补丁。

  • 巴斯·范·贝克

  • 查尔斯·哈里斯

  • Khem Raj +

  • 马克·哈尔福什

  • 马蒂·皮库斯

  • Panagiotis Zestanakis +

  • 彼得·霍金斯

  • 普拉迪普塔·戈什

  • 罗斯·巴诺夫斯基

  • 赛义德·阿德尔

  • 塞巴斯蒂安·伯格

  • Syam Gadde +

  • dmbelov +

  • pkubaj +

合并的拉取请求

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

  • #22965: 维护:将 python 3.11-dev 更新为 3.11。

  • #22966: 文档:移除悬空的弃用警告

  • #22967: 增强:在 FreeBSD/powerpc64* 上检测 CPU 特性

  • #22968: 错误:np.loadtxt 无法加载带引号字段分隔的文本文件…

  • #22969: 测试:添加 fixture 以避免测试顺序随机化问题。

  • #22970: 错误:修复违反只读标志的填充。 (#22959)

  • #22971: 维护:为缺失的标量 AttributeError 添加额外信息

  • #22972: 维护:将 scipy arm64 助手的导出移入主模块

  • #22976: 错误,SIMD:修复 arm64/clang 上 sin/cos 的虚假无效异常

  • #22989: 错误:确保 sin、cos 和 arctan2 中的循环顺序正确

  • #23030: 文档:为 strict 参数中的版本添加信息…

  • #23031: 错误:在大多数编译器上使用 _Alignof 而不是 offsetof()

  • #23147: 错误:修复 npyv__trunc_s32_f32 (VXE)

  • #23148: 错误:修复整数/浮点标量提升

  • #23149: 错误:添加丢失的 <type_traits> 头文件。

  • #23150: 类型,维护:为 npt.ArrayLike 添加缺失的显式 Any 参数…

  • #23161: 构建:移除 npy_nextafter 的多余定义 [wheel 构建]

贡献者

本次发布共有 14 位贡献者。名字后带有“+”的人第一次贡献了补丁。

  • 巴斯·范·贝克

  • 查尔斯·哈里斯

  • Khem Raj +

  • 马克·哈尔福什

  • 马蒂·皮库斯

  • Panagiotis Zestanakis +

  • 彼得·霍金斯

  • 普拉迪普塔·戈什

  • 罗斯·巴诺夫斯基

  • 赛义德·阿德尔

  • 塞巴斯蒂安·伯格

  • Syam Gadde +

  • dmbelov +

  • pkubaj +

合并的拉取请求

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

  • #22965: MAINT: 将 python 3.11-dev 更新至 3.11。

  • #22966: DOC: 移除悬空的弃用警告

  • #22967: ENH: 在 FreeBSD/powerpc64* 上检测 CPU 特性

  • #22968: BUG: np.loadtxt 无法加载带引号字段分隔的文本文件…

  • #22969: TST: 添加 fixture 以避免测试顺序随机化的问题。

  • #22970: BUG: 修复违反只读标志的填充问题。 (#22959)

  • #22971: MAINT: 为缺失的标量 AttributeError 添加额外信息

  • #22972: MAINT: 将 scipy arm64 助手的导出移至主模块

  • #22976: BUG, SIMD: 修复 arm64/clang 上 sin/cos 的虚假无效异常

  • #22989: BUG: 确保 sin、cos 和 arctan2 中的循环顺序正确

  • #23030: DOC: 为 strict 参数添加版本添加信息…

  • #23031: BUG: 在大多数编译器上使用 _Alignof 而不是 offsetof()

  • #23147: BUG: 修复 npyv__trunc_s32_f32 (VXE) 的问题

  • #23148: BUG: 修复整数/浮点标量提升问题

  • #23149: BUG: 添加缺失的 <type_traits> 头文件。

  • #23150: TYP, MAINT: 为 npt.ArrayLike 添加一个遗漏的显式 Any 参数…

  • #23161: BLD: 移除 npy_nextafter 的多余定义 [wheel 构建]

NumPy 1.24.1 发布说明

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

NumPy 1.24.1 是一个维护版本,修复了在 1.24.0 发布后发现的错误和回归。此版本支持的 Python 版本为 3.8-3.11。

贡献者

总共有 12 人为此版本做出了贡献。名字后带有“+”符号的人第一次贡献了补丁。

  • Andrew Nelson

  • Ben Greiner +

  • Charles Harris

  • Clément Robert

  • Matteo Raso

  • Matti Picus

  • Melissa Weber Mendonça

  • Miles Cranmer

  • Ralf Gommers

  • Rohit Goswami

  • Sayed Adel

  • Sebastian Berg

合并的拉取请求

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

  • #22820: BLD: 在 setup.py 中为更新的 setuptools 添加解决方法

  • #22830: BLD: CIRRUS_TAG redux

  • #22831: DOC: 修��1.23 版本中的一些拼写错误

  • #22832: BUG: 使用 pytest-leaks 发现的引用计数错误

  • #22834: BUG, SIMD: 修复多个 ufunc 中遇到的无效值

  • #22837: TST: 忽略更多的 np.distutils.log 导入

  • #22839: BUG: 不要在 np.ma.masked_invalid 中使用 getdata()

  • #22847: BUG: 确保以分隔符结尾的行的行为正确

  • #22848: BUG, SIMD: 修复布尔比较的位掩码

  • #22857: BLD: 帮助 raspian arm + clang 13 解决 __builtin_mul_overflow 问题

  • #22858: API: 确保对 masked_invalid 返回完整掩码

  • #22866: BUG: 多项式现在可以正确复制(#22669)

  • #22867: BUG, SIMD: 修复 ufunc 比较循环中的内存重叠

  • #22868: BUG: 强化对浮点警告的字符串转换

  • #22875: TST: 在随机输出测试中忽略 nan 警告

  • #22883: MAINT: 恢复 freebsd 所需的 npymath 实现

  • #22884: BUG: 修复 in1d 中混合整数数据类型的整数溢出 #22877

  • #22887: BUG: 使用charset_normalizer进行编码检查时使用整个文件。

贡献者

总共有 12 人为此版本做出了贡献。名字后带有“+”符号的人第一次贡献了补丁。

  • Andrew Nelson

  • Ben Greiner +

  • Charles Harris

  • Clément Robert

  • Matteo Raso

  • Matti Picus

  • Melissa Weber Mendonça

  • Miles Cranmer

  • Ralf Gommers

  • Rohit Goswami

  • Sayed Adel

  • Sebastian Berg

合并的拉取请求

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

  • #22820: BLD: 在 setup.py 中为更新的 setuptools 添加解决方法

  • #22830: BLD: CIRRUS_TAG redux

  • #22831: DOC: 修复 1.23 版本说明中的几处拼写错误

  • #22832: BUG: 使用 pytest-leaks 发现的引用计数错误

  • #22834: BUG, SIMD: 修复多个 ufunc 中遇到的无效值

  • #22837: TST: 忽略更多 np.distutils.log 导入

  • #22839: BUG: 不要在 np.ma.masked_invalid 中使用 getdata()

  • #22847: BUG: 确保以分隔符结尾的行的行为正确

  • #22848: BUG, SIMD: 修复布尔比较的位掩码

  • #22857: BLD: 帮助 raspian arm + clang 13 解决 __builtin_mul_overflow 问题

  • #22858: API: 确保对 masked_invalid 返回完整掩码

  • #22866: BUG: 多项式现在可以正确复制(#22669)

  • #22867: BUG, SIMD: 修复 ufunc 比较循环中的内存重叠

  • #22868: BUG: 加强对浮点警告的字符串转换

  • #22875: TST: 在随机输出测试中忽略 nan 警告

  • #22883: MAINT: 恢复 freebsd 所需的 npymath 实现

  • #22884: BUG: 修复混合整数 dtype 在 in1d 中的整数溢出问题 #22877

  • #22887: BUG: 使用charset_normalizer进行编码检查时使用整个文件。

NumPy 1.24 发布说明

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

NumPy 1.24.0 发布继续致力于改进 dtype 的处理和提升,增加执行速度,并澄清文档。由于提升和清理的变化,还有大量新的和已过时的弃用功能。这可以称为弃用版本。亮点包括

  • 许多新的弃用功能,请查看。

  • 许多已过时的弃用功能,

  • 新的 F2PY 功能和修复。

  • 新的“dtype”和“casting”关键字用于堆叠函数。

详细信息请参见下文,

本次发布支持 Python 版本 3.8-3.11。

弃用功能

弃用 fastCopyAndTranspose 和 PyArray_CopyAndTranspose

numpy.fastCopyAndTranspose函数已被弃用。直接使用相应的复制和转置方法:

arr.T.copy() 

底层 C 函数PyArray_CopyAndTranspose也已从 NumPy C-API 中弃用。

(gh-22313)

超出范围的 Python 整数转换

尝试将 Python 整数转换为 NumPy 值现在将始终检查结果是否可以由 NumPy 表示。这意味着以下示例将来会失败,并现在会给出DeprecationWarning

np.uint8(-1)
np.array([3000], dtype=np.int8) 

许多这些以前是成功的。这样的代码主要对带有负值的无符号整数有用,例如np.uint8(-1)给出np.iinfo(np.uint8).max

请注意,NumPy 整数之间的转换不受影响,因此np.array(-1).astype(np.uint8)仍然有效,并使用 C 整数溢出逻辑。对于负值,也可以查看数组:np.array(-1, dtype=np.int8).view(np.uint8)。在某些情况下,使用np.iinfo(np.uint8).maxval % 2**8也可能效果很好。

在罕见情况下,输入数据可能混合负值和非常大的无符号值(即-12**63)。在这种情况下,不幸地需要在 Python 值上使用%,或者根据是否预期负值使用有符号或无符号转换。

(gh-22385)

弃用msort

numpy.msort函数已被弃用。请改用np.sort(a, axis=0)

(gh-22456)

np.str0等类似功能现已弃用

以 0 位大小结尾的标量类型别名:np.object0np.str0np.bytes0np.void0np.int0np.uint0以及np.bool8现已弃用,并最终将被移除。

(gh-22607)

已过时的弃用功能

  • np.histogramnp.histogram2dnp.histogramdd中的normed关键字参数已被移除。请改用density。如果normed是按位置传递的,则现在使用density

    (gh-21645)

  • 创建不规则数组现在将始终引发ValueError,除非传递了dtype=object。这包括非常深度嵌套的序列。

    (gh-22004)

  • 不再支持 Visual Studio 2015 及更早版本。

  • 不再支持 Windows Interix POSIX 互操作层。

    (gh-22139)

  • 不再支持 Cygwin < 3.3。

    (gh-22159)

  • np.ma.MaskedArray的 mini()方法已被移除。请使用np.ma.MaskedArray.min()np.ma.minimum.reduce()

  • np.ma.minimumnp.ma.maximum的单参数形式已被移除。请改用np.ma.minimum.reduce()np.ma.maximum.reduce()

    (gh-22228)

  • 在 ufuncs 中将除了主要本机字节顺序之外的 dtype 实例传递给dtype=signature=现在会引发TypeError。我们建议传递字符串"int8"或标量类型np.int8,因为字节顺序、日期时间/时间增量单位等从不被强制执行。(在 NumPy 1.21 中最初被弃用。)

    (gh-22540)

  • 对比 ufuncs 的dtype=参数现在被正确应用。这意味着只有boolobject是有效值,且dtype=object被强制执行。

    (gh-22541)

  • 别名np.objectnp.boolnp.floatnp.complexnp.strnp.int的弃用已过期(引入 NumPy 1.20)。其中一些现在除了引发错误外还会产生 FutureWarning,因为它们将来会映射到 NumPy 标量。

    (gh-22607)

兼容性说明

array.fill(scalar)的行为可能会有轻微不同

numpy.ndarray.fill 在某些情况下可能会有轻微不同的行为,因为逻辑与项目赋值对齐:

arr = np.array([1])  # with any dtype/value
arr.fill(scalar)
# is now identical to:
arr[0] = scalar 

以前的转换可能在使用无法表示为目标dtype的值或目标具有object dtype 时产生略有不同的答案。

(gh-20924)

子数组到对象的转换现在会复制

将包含子数组的 dtype 转换为对象将确保子数组的副本。以前会返回一个不安全的视图:

arr = np.ones(3, dtype=[("f", "i", 3)])
subarray_fields = arr.astype(object)[0]
subarray = subarray_fields[0]  # "f" field

np.may_share_memory(subarray, arr) 

现在始终为 false。而以前对于特定转换是 true。

(gh-21925)

返回的数组尊重 dtype 关键字参数对象的唯一性

np.arrayasarraydtype关键字参数一起使用时,返回数组的 dtype 现在总是与调用者提供的 dtype 完全匹配。

在某些情况下,这种变化意味着返回的是视图而不是输入数组。以下是 64 位 Linux 上的一个示例,其中longlonglong具有相同的精度但不同的dtypes

>>> arr = np.array([1, 2, 3], dtype="long")
>>> new_dtype = np.dtype("longlong")
>>> new = np.asarray(arr, dtype=new_dtype)
>>> new.dtype is new_dtype
True
>>> new is arr
False 

在更改之前,dtype不匹配是因为new is arrTrue

(gh-21995)

DLPack 导出引发 BufferError

当无法通过 DLPack 导出数组缓冲区时,现在始终引发 BufferError,之前可能引发 TypeErrorRuntimeError。这允许在首先尝试 DLPack 时回退到缓冲区协议或 __array_interface__

(gh-22542)

NumPy 构建不再在 GCC-6 上进行测试

Ubuntu 18.04 已在 GitHub actions 中弃用,Ubuntu 20.04 上不提供 GCC-6,因此不再测试使用该编译器的构建。我们仍然测试使用 GCC-7 和 GCC-8 进行构建。

(gh-22598)

新特性

多项式类添加了新属性 symbol

numpy.polynomial 包中的多项式类具有新的 symbol 属性,用于表示多项式的未知数。这可以用于在打印时更改变量的值:

>>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
>>> print(P_y)
1.0 + 0.0·y¹ - 1.0·y² 

注意多项式类仅支持 1D 多项式,因此在涉及具有不同符号的多项式的操作时,如果结果是多变量的,则不允许:

>>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
>>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
>>> P * P_z
Traceback (most recent call last)
 ...
ValueError: Polynomial symbols differ 

符��可以是任何有效的 Python 标识符。默认为 symbol=x,与现有行为一致。

(gh-16154)

F2PY 支持 Fortran character 字符串

F2PY 现在支持包装 Fortran 函数:

  • 字符(例如 character x

  • 字符串数组(例如 character, dimension(n) :: x

  • 字符串(例如 character(len=10) x

  • 以及字符字符串数组(例如 character(len=10), dimension(n, m) :: x

参数,包括将 Python unicode 字符串作为 Fortran 字符串参数传递。

(gh-19388)

新函数 np.show_runtime

添加了一个新函数 numpy.show_runtime,用于显示机器的运行时信息,除了显示构建相关信息的 numpy.show_config

(gh-21468)

testing.assert_array_equalstrict 选项

testing.assert_array_equal 现在可用 strict 选项。设置 strict=True 将禁用标量的广播行为,并确保输入数组具有相同的数据类型。

(gh-21595)

np.unique 添加了新参数 equal_nan

np.unique 在 1.21 版本中更改,将所有 NaN 值视为相等并返回单个 NaN。设置 equal_nan=False 将恢复到 1.21 版本之前的行为,将 NaNs 视为唯一。默认为 True

(gh-21623)

numpy.stackcastingdtype 关键字参数

numpy.stack 现在可用 castingdtype 关键字参数。要使用它们,请写成 np.stack(..., dtype=None, casting='same_kind')

numpy.vstackcastingdtype 关键字参数

numpy.vstack 现在可用 castingdtype 关键字参数。要使用它们,请写成 np.vstack(..., dtype=None, casting='same_kind')

numpy.hstackcastingdtype关键字参数。

numpy.hstack现在可用castingdtype关键字参数。要使用它们,请写成np.hstack(..., dtype=None, casting='same_kind')

(gh-21627)

底层单例RandomState的位生成器可以更改。

在启动时,numpy.random模块中公开的单例RandomState实例使用MT19937位生成器进行初始化。新函数set_bit_generator允许用用户提供的位生成器替换默认位生成器。引入此函数是为了提供一种方法,使新代码中可以无缝集成高质量、现代位生成器,同时又可以使用由单例提供的随机变量生成函数的现有代码。配套函数get_bit_generator返回单例RandomState正在使用的当前位生成器。这是为了在需要时简化恢复原始随机性源。

生成可重现随机数的首选方法是在Generator实例中使用现代位生成器。函数default_rng简化了实例化:

>>> rg = np.random.default_rng(3728973198)
>>> rg.random() 

然后可以与单例实例共享相同的位生成器,以便调用random模块中的函数将使用相同的位生成器:

>>> orig_bit_gen = np.random.get_bit_generator()
>>> np.random.set_bit_generator(rg.bit_generator)
>>> np.random.normal() 

交换是永久的(直到被撤销),因此对random模块中的函数的任何调用都将使用新的位生成器。如果需要,原始位生成器可以恢复以使代码正确运行:

>>> np.random.set_bit_generator(orig_bit_gen) 

(gh-21976)

np.void现在有一个dtype参数。

现在 NumPy 允许通过将dtype参数传递给np.void直接构造结构化空标量。

(gh-22316)

改进

F2PY 改进

  • 生成的扩展模块不再使用已弃用的 NumPy-C API。

  • 改进了f2py生成的异常消息。

  • 大量错误和flake8警告修复。

  • 在 C 表达式中,可以使用的各种 CPP 宏都以f2py_为前缀。例如,应该使用f2py_len(x)而不是len(x)

  • 引入了一个新的构造character(f2py_len=...),以支持从包装函数返回假定长度的字符字符串(例如character(len=*))。

引入了一个钩子,用于在读取所有输入文件后支持重写f2py内部数据结构。例如,这对于 SciPy 支持的 BC 是必需的,其中字符参数在C表达式中被视为字符字符串参数。

(gh-19388)

IBM zSystems 矢量扩展设施(SIMD)。

增加了对 zSystem(z13、z14、z15)的 SIMD 扩展的支持,通过通用内在函数接口。这种支持可以提高使用通用内在函数实现的所有 SIMD 内核的性能,包括以下操作:rint、floor、trunc、ceil、sqrt、absolute、square、reciprocal、tanh、sin、cos、equal、not_equal、greater、greater_equal、less、less_equal、maximum、minimum、fmax、fmin、argmax、argmin、add、subtract、multiply、divide。

(gh-20913)

NumPy 现在在转换中给出浮点错误

在大多数情况下,NumPy 以前在转换期间发生浮点警告或错误时不会给出警告。例如,转换如下:

np.array([2e300]).astype(np.float32)  # overflow for float32
np.array([np.inf]).astype(np.int64) 

现在通常会给出浮点警告。这些警告应该警告浮点溢出发生。在将浮点值转换为整数时出现错误时,用户应该期望无效值警告。

用户可以使用 np.errstate 修改这些警告的行为。

浮点数到整数的转换警告可能与平台相关。例如:

arr = np.full(100, fill_value=1000, dtype=np.float64)
arr.astype(np.int8) 

可能会给出等效于的结果(中间转换意味着不会给出警告):

arr.astype(np.int64).astype(np.int8) 

可能返回未定义的结果,并设置警告:

RuntimeWarning: invalid value encountered in cast 

具体行为取决于 C99 标准及其在软件和硬件中的实现。

(gh-21437)

F2PY 支持 value 属性

Fortran 标准要求使用 value 属性声明的变量必须按值传递而不是按引用传递。F2PY 现在正确支持这种用法模式。因此,Fortran 代码中的 integer, intent(in), value :: x 将生成正确的包装器。

(gh-21807)

增加了对第三方 BitGenerators 的 pickle 支持

位生成器的 pickle 格式已扩展,允许每个位生成器在 pickling 期间提供自己的构造函数。NumPy 的早期版本仅支持使用 NumPy 提供的核心一组位生成器创建的 Generator 实例的 unpickling。尝试 unpickle 使用第三方位生成器的 Generator 将失败,因为在 unpickling 期间使用的构造函数仅知道 NumPy 中包含的位生成器。

(gh-22014)

arange() 现在在 dtype=str 的情况下明确失败

以前,np.arange(n, dtype=str) 函数对 n=1n=2 有效,但对其他值的 n 会引发一个非特定的异常消息。现在,它会引发一个 TypeError,提示 arange 不支持字符串 dtype:

>>> np.arange(2, dtype=str)
Traceback (most recent call last)
 ...
TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>. 

(gh-22055)

numpy.typing 协议现在可以在运行时进行检查

numpy.typing.ArrayLikenumpy.typing.DTypeLike 中使用的协议现在被正确标记为运行时可检查,使它们更容易用于运行时类型检查器。

(gh-22357)

性能改进和变化

更快的np.isinnp.in1d版本用于整数数组

np.in1d(被np.isin使用)现在可以在传递两个整数数组时切换到更快的算法(速度提高了超过 10 倍)。这通常会自动使用,但您可以使用kind="sort"kind="table"来分别强制使用旧方法或新方法。

(gh-12065)

更快的比较运算符

比较函数(numpy.equalnumpy.not_equalnumpy.lessnumpy.less_equalnumpy.greaternumpy.greater_equal)现在更快,因为它们现在使用通用内在函数进行矢量化。对于具有 SIMD 扩展 AVX512BW 的 CPU,整数、浮点和布尔数据类型���性能提升分别为 2.57 倍、1.65 倍和 19.15 倍(N=50000)。

(gh-21483)

变更

更好地报告整数除法溢出

标量和数组的整数除法溢出以前会提供RuntimeWarning,返回值未定义,导致在罕见情况下崩溃:

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32) 

整数除法溢出现在返回输入 dtype 的最小值并引发以下RuntimeWarning

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: overflow encountered in floor_divide
array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
 -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
 dtype=int32) 

(gh-21506)

masked_invalid现在会就地修改掩码

当与copy=False一起使用时,numpy.ma.masked_invalid现在会就地修改输入的掩码数组。这使其行为与masked_where完全相同,并更好地匹配文档。

(gh-22046)

nditer/NpyIter允许分配所有操作数

通过 Python 中的np.nditer和 C 中的NpyIter可用的 NumPy 迭代器现在支持分配所有数组。在这种情况下,迭代器形状默认为()。必须提供操作数的 dtype,因为无法从其他输入中推断出“公共 dtype”。

(gh-22457)

弃用

弃用fastCopyAndTransposePyArray_CopyAndTranspose

numpy.fastCopyAndTranspose函数已被弃用。直接使用相应的复制和转置方法:

arr.T.copy() 

底层的 C 函数PyArray_CopyAndTranspose也已从 NumPy C-API 中弃用。

(gh-22313)

Python 整数超出范围的转换

尝试将 Python 整数转换为 NumPy 值现在将始终检查结果是否可以由 NumPy 表示。这意味着以下示例将来将失败,并现在会给出DeprecationWarning

np.uint8(-1)
np.array([3000], dtype=np.int8) 

许多这样的操作以前是成功的。这些代码主要用于具有负值的无符号整数,例如np.uint8(-1)给出np.iinfo(np.uint8).max

注意,NumPy 整数之间的转换不受影响,因此np.array(-1).astype(np.uint8)仍然有效,并使用 C 整数溢出逻辑。对于负值,也可以通过查看数组来实现:np.array(-1, dtype=np.int8).view(np.uint8)。在某些情况下,使用np.iinfo(np.uint8).maxval % 2**8也可能效果很好。

在罕见情况下,输入数据可能混合负值和非常大的无符号值(即 -12**63)。在这种情况下,不幸的是必须对 Python 值使用 %,或者根据是否预期负值使用有符号或无符号转换。

(gh-22385)

弃用 msort

numpy.msort 函数已被弃用。改用 np.sort(a, axis=0)

(gh-22456)

np.str0 和类似的现已被弃用

以 0 位大小结尾的标量类型别名:np.object0np.str0np.bytes0np.void0np.int0np.uint0 以及 np.bool8 现已被弃用,并最终将被移除。

(gh-22607)

弃用 fastCopyAndTranspose 和 PyArray_CopyAndTranspose

numpy.fastCopyAndTranspose 函数已被弃用。直接使用相应的复制和转置方法:

arr.T.copy() 

底层 C 函数 PyArray_CopyAndTranspose 也已从 NumPy C-API 中弃用。

(gh-22313)

超出范围的 Python 整数转换

尝试将 Python 整数转换为 NumPy 值现在将始终检查结果是否可以由 NumPy 表示。这意味着以下示例将在未来失败,并现在会给出 DeprecationWarning

np.uint8(-1)
np.array([3000], dtype=np.int8) 

其中许多在以前确实成功。这样的代码主要对带有负值的无符号整数有用,例如 np.uint8(-1) 给出 np.iinfo(np.uint8).max

请注意,NumPy 整数之间的转换不受影响,因此 np.array(-1).astype(np.uint8) 仍然有效,并使用 C 整数溢出逻辑。对于负值,也可以查看数组:np.array(-1, dtype=np.int8).view(np.uint8)。在某些情况下,使用 np.iinfo(np.uint8).maxval % 2**8 也可能很好地工作。

在罕见情况下,输入数据可能混合负值和非常大的无符号值(即 -12**63)。在这种情况下,不幸的是必须对 Python 值使用 %,或者根据是否预期负值使用有符号或无符号转换。

(gh-22385)

��用 msort

numpy.msort 函数已被弃用。改用 np.sort(a, axis=0)

(gh-22456)

np.str0 和类似的现已被弃用

以 0 位大小结尾的标量类型别名:np.object0np.str0np.bytes0np.void0np.int0np.uint0 以及 np.bool8 现已被弃用,并最终将被移除。

(gh-22607)

过期的弃用功能

  • np.histogramnp.histogram2dnp.histogramdd 中移除了 normed 关键字参数。改用 density。如果 normed 是按位置传递的,则现在使用 density

    (gh-21645)

  • 不规则数组创建现在除非传递 dtype=object,否则将始终引发 ValueError。这包括非常深度嵌套的序列。

    (gh-22004)

  • 不再支持 Visual Studio 2015 及更早版本。

  • 不再支持 Windows Interix POSIX 互操作层。

    (gh-22139)

  • 支持 Cygwin < 3.3 已被移除。

    (gh-22159)

  • np.ma.MaskedArraymini() 方法已被移除。改用 np.ma.MaskedArray.min()np.ma.minimum.reduce()

  • np.ma.minimumnp.ma.maximum 的单参数形式已被移除。改用 np.ma.minimum.reduce()np.ma.maximum.reduce()

    (gh-22228)

  • 在 ufuncs 中将除了主要的(主要是本机字节顺序)规范 dtype 实例传递给 dtype=signature= 现在会引发 TypeError。我们建议传递字符串 "int8" 或标量类型 np.int8,因为字节顺序、日期时间/时间增量单位等从不被强制执行。(在 NumPy 1.21 中最初被弃用。)

    (gh-22540)

  • 对比较 ufuncs 的 dtype= 参数现在被正确应用。这意味着只有 boolobject 是有效值,且 dtype=object 被强制执行。

    (gh-22541)

  • 对于别名 np.objectnp.boolnp.floatnp.complexnp.strnp.int 的弃用已过期(引入于 NumPy 1.20)。其中一些现在除了引发错误外还会产生 FutureWarning,因为它们将来会映射到 NumPy 标量。

    (gh-22607)

兼容性说明

array.fill(scalar) 的行为可能略有不同

numpy.ndarray.fill 现在在某些情况下可能会有略微不同的行为,因为逻辑与项赋值对齐:

arr = np.array([1])  # with any dtype/value
arr.fill(scalar)
# is now identical to:
arr[0] = scalar 

以前的强制转换可能在使用无法表示为目标 dtype 的值或目标具有 object dtype 时产生略有不同的答案。

(gh-20924)

子数组转为对象现在会复制

将包含子数组的 dtype 强制转换为对象将确保子数组的副本。之前返回的是不安全的视图:

arr = np.ones(3, dtype=[("f", "i", 3)])
subarray_fields = arr.astype(object)[0]
subarray = subarray_fields[0]  # "f" field

np.may_share_memory(subarray, arr) 

现在始终为 false。而之前对于特定转换是 true。

(gh-21925)

返回的数组尊重 dtype kwarg 对象的唯一性

dtype 关键字参数与 np.arrayasarray 一起使用时,返回数组的 dtype 现在始终与调用者提供的 dtype 完全匹配。

在某些情况下,这个变化意味着返回的是视图而不是输入数组。以下是在 64 位 Linux 上的一个示例,其中 longlonglong 具有相同的精度但不同的 dtypes

>>> arr = np.array([1, 2, 3], dtype="long")
>>> new_dtype = np.dtype("longlong")
>>> new = np.asarray(arr, dtype=new_dtype)
>>> new.dtype is new_dtype
True
>>> new is arr
False 

在更改之前,dtype不匹配是因为new is arrTrue

(gh-21995)

DLPack 导出引发BufferError

当数组缓冲区无法通过 DLPack 导出时,现在总是引发BufferError,而以前会引发TypeErrorRuntimeError。这允许在首次尝试 DLPack 时回退到缓冲区协议或__array_interface__

(gh-22542)

不再在 GCC-6 上测试 NumPy 构建

Ubuntu 18.04 已在 GitHub 操作中弃用,Ubuntu 20.04 上不可用 GCC-6,因此不再测试使用该编译器的构建。我们仍然测试使用 GCC-7 和 GCC-8 进行构建。

(gh-22598)

array.fill(scalar)的行为可能略有不同

numpy.ndarray.fill在某些情况下可能会因为逻辑与项目赋值对齐而略有不同:

arr = np.array([1])  # with any dtype/value
arr.fill(scalar)
# is now identical to:
arr[0] = scalar 

以前进行转换时,当使用无法表示为目标dtype的值或目标具有object dtype 时,可能会产生略有不同的答案。

(gh-20924)

子数组转为对象现在会复制

将包含子数组的 dtype 转换为对象现在将确保子数组的副本。以前会返回一个不安全的视图:

arr = np.ones(3, dtype=[("f", "i", 3)])
subarray_fields = arr.astype(object)[0]
subarray = subarray_fields[0]  # "f" field

np.may_share_memory(subarray, arr) 

现在总是为 false。而以前对于特定转换是 true。

(gh-21925)

返回的数组尊重 dtype kwarg 对象的唯一性

当使用np.arrayasarray时,如果使用了dtype关键字参数,则返回数组的 dtype 现在总是与调用者提供的 dtype 完全匹配。

在某些情况下,这种更改意味着返回的是视图而不是输入数组。以下是 64 位 Linux 上的一个示例,其中longlonglong具有相同的精度但不同的dtypes

>>> arr = np.array([1, 2, 3], dtype="long")
>>> new_dtype = np.dtype("longlong")
>>> new = np.asarray(arr, dtype=new_dtype)
>>> new.dtype is new_dtype
True
>>> new is arr
False 

在更改之前,dtype不匹配是因为new is arrTrue

(gh-21995)

DLPack 导出引发BufferError

当数组缓冲区无法通过 DLPack 导出时,现在总是引发BufferError,而以前会引发TypeErrorRuntimeError。这允许在首次尝试 DLPack 时回退到缓冲区协议或__array_interface__

(gh-22542)

不再在 GCC-6 上测试 NumPy 构建

Ubuntu 18.04 已在 GitHub 操作中弃用,Ubuntu 20.04 上不可用 GCC-6,因此不再测试使用该编译器的构建。我们仍然测试使用 GCC-7 和 GCC-8 进行构建。

(gh-22598)

新特性

多项式类添加了新属性symbol

numpy.polynomial 包中的多项式类具有一个新的 symbol 属性,用于表示多项式的未知数。这可用于在打印时更改变量的值:

>>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
>>> print(P_y)
1.0 + 0.0·y¹ - 1.0·y² 

请注意,多项式类仅支持 1D 多项式,因此涉及具有不同符号的多项式的操作在结果为多变量时是不允许的:

>>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
>>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
>>> P * P_z
Traceback (most recent call last)
 ...
ValueError: Polynomial symbols differ 

符号可以是任何有效的 Python 标识符。默认为 symbol=x,与现有行为一致。

(gh-16154)

F2PY 支持 Fortran character 字符串

F2PY 现在支持包装 Fortran 函数:

  • 字符(例如 character x

  • 字符数组(例如 character, dimension(n) :: x

  • 字符串(例如 character(len=10) x

  • 和字符字符串数组(例如 character(len=10), dimension(n, m) :: x

参数,包括将 Python Unicode 字符串作为 Fortran 字符串参数传递。

(gh-19388)

新函数 np.show_runtime

已添加一个新函数 numpy.show_runtime,用于显示机器的运行时信息,除了 numpy.show_config 显示构建相关信息。

(gh-21468)

testing.assert_array_equalstrict 选项

strict 选项现在可用于 testing.assert_array_equal。设置 strict=True 将禁用标量的广播行为,并确保输入数组具有相同的数据类型。

(gh-21595)

np.unique 添加了新参数 equal_nan

np.unique 在 1.21 版本中已更改,将所有 NaN 值视为相等并返回单个 NaN。设置 equal_nan=False 将恢复到 1.21 版本之前的行为,将 NaN 视为唯一。默认为 True

(gh-21623)

castingdtype 关键字参数用于 numpy.stack

castingdtype 关键字参数现在可用于 numpy.stack。要使用它们,请写成 np.stack(..., dtype=None, casting='same_kind')

castingdtype 关键字参数用于 numpy.vstack

castingdtype 关键字参数现在可用于 numpy.vstack。要使用它们,请写成 np.vstack(..., dtype=None, casting='same_kind')

castingdtype 关键字参数用于 numpy.hstack

castingdtype 关键字参数现在可用于 numpy.hstack。要使用它们,请写成 np.hstack(..., dtype=None, casting='same_kind')

(gh-21627)

可更改单例 RandomState 底层的比特生成器

numpy.random模块中公开的单例RandomState实例在启动时使用MT19937位生成器进行初始化。新函数set_bit_generator允许用用户提供的位生成器替换默认位生成器。引入此函数是为了提供一种方法,使新代码中可以无缝集成高质量、现代的位生成器,并与使用单例提供的随机变量生成函数的现有代码进行整合。伴随函数get_bit_generator返回单例RandomState正在使用的当前位生成器。这是为了在需要时简化恢复原始随机性源的过程。

生成可复现随机数的首选方法是在Generator实例中使用现代位生成器。函数default_rng简化了实例化过程:

>>> rg = np.random.default_rng(3728973198)
>>> rg.random() 

然后可以将相同的位生成器与单例实例共享,以便调用random模块中的函数将使用相同的位生成器:

>>> orig_bit_gen = np.random.get_bit_generator()
>>> np.random.set_bit_generator(rg.bit_generator)
>>> np.random.normal() 

交换是永久的(直到被撤销),因此对random模块中的函数的任何调用都将使用新的位生成器。如果需要,原始位生成器可以恢复以使代码正确运行:

>>> np.random.set_bit_generator(orig_bit_gen) 

(gh-21976)

np.void现在有一个dtype参数

NumPy 现在允许通过将dtype参数传递给np.void直接构造结构化空标量。

(gh-22316)

多项式类添加了新属性symbol

numpy.polynomial包中的多项式类具有一个新的symbol属性,用于表示多项式的未知数。这可用于在打印时更改变量的值:

>>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
>>> print(P_y)
1.0 + 0.0·y¹ - 1.0·y² 

请注意,多项式类仅支持 1D 多项式,因此在涉及具有不同符号的多项式且结果为多变量时,不允许进行操作:

>>> P = np.polynomial.Polynomial([1, -1])  # default symbol is "x"
>>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
>>> P * P_z
Traceback (most recent call last)
 ...
ValueError: Polynomial symbols differ 

符号可以是任何有效的 Python 标识符。默认为symbol=x,与现有行为一致。

(gh-16154)

F2PY 对 Fortran character 字符串的支持

F2PY 现在支持包装 Fortran 函数:

  • 字符(例如character x

  • 字符数组(例如character, dimension(n) :: x

  • 字符串(例如character(len=10) x

  • 和字符字符串数组(例如character(len=10), dimension(n, m) :: x

参数,包括将 Python Unicode 字符串作为 Fortran 字符串参数传递。

(gh-19388)

新函数np.show_runtime

添加了一个新函数numpy.show_runtime,用于显示机器的运行时信息,此外numpy.show_config显示了与构建相关的信息。

(gh-21468)

testing.assert_array_equalstrict选项

testing.assert_array_equal现在可用strict选项。设置strict=True将禁用标量的广播行为,并确保输入��组具有相同的数据类型。

(gh-21595)

np.unique添加了新参数equal_nan

np.unique在 1.21 版本中已更改,将所有NaN值视为相等并返回单个NaN。设置equal_nan=False将恢复到 1.21 版本之前的行为,将NaN视为唯一。默认为True

(gh-21623)

numpy.stackcastingdtype关键字参数

numpy.stack现在也可以使用castingdtype关键字参数。要使用它们,写成np.stack(..., dtype=None, casting='same_kind')

numpy.vstackcastingdtype关键字参数

numpy.vstackcastingdtype关键字参数现在也可用。要使用它们,写成np.vstack(..., dtype=None, casting='same_kind')

numpy.hstackcastingdtype关键字参数

现在numpy.hstack也可以使用castingdtype关键字参数。要使用它们,写成np.hstack(..., dtype=None, casting='same_kind')

(gh-21627)

单例RandomState的比特生成器可以更改

在启动时,numpy.random模块中公开的单例RandomState实例使用MT19937比特生成器进行初始化。新函数set_bit_generator允许将默认比特生成器替换为用户提供的比特生成器。此函数已被引入,以提供一种方法,允许在新代码中无缝集成高质量、现代比特生成器,并与使用单例提供的随机变量生成函数的现有代码进行整合。配套函数get_bit_generator返回单例RandomState正在使用的当前比特生成器。这是为了在需要时简化恢复原始随机性源。

生成可复现随机数的首选方法是在Generator实例中使用现代比特生成器。函数default_rng简化了实例化:

>>> rg = np.random.default_rng(3728973198)
>>> rg.random() 

然后可以将相同的比特生成器与单例实例共享,以便调用random模块中的函数将使用相同的比特生成器:

>>> orig_bit_gen = np.random.get_bit_generator()
>>> np.random.set_bit_generator(rg.bit_generator)
>>> np.random.normal() 

交换是永久的(直到被逆转),因此对random模块中的函数的任何调用都将使用新的比特生成器。如果需要代码正确运行,原始状态可以恢复:

>>> np.random.set_bit_generator(orig_bit_gen) 

(gh-21976)

np.void现在有一个dtype参数

现在 NumPy 允许通过将dtype参数传递给np.void直接构造结构化空标量。

(gh-22316)

改进

F2PY 改进

  • 生成的扩展模块不再使用已弃用的 NumPy-C API

  • 改进了由f2py生成的异常消息

  • 大量错误和flake8警告修复

  • 在签名文件的 C 表达式中可以使用的各种 CPP 宏都以f2py_为前缀。例如,应该使用f2py_len(x)而不是len(x)

  • 引入了一个新的构造character(f2py_len=...)来支持从包装函数返回假定长度的字符串(例如character(len=*)

引入了一个钩子来支持在读取所有输入文件后重写f2py内部数据结构。例如,在 SciPy 支持的 BC 中,字符参数被视为C表达式中的字符串参数是必需的。

(gh-19388)

IBM zSystems 矢量扩展设施(SIMD)

增加了对 zSystem(z13、z14、z15)的 SIMD 扩展的支持,通过通用内在函数接口。这种支持导致使用通用内在函数实现的所有 SIMD 内核的性能提升,包括以下操作:rint、floor、trunc、ceil、sqrt、absolute、square、reciprocal、tanh、sin、cos、equal、not_equal、greater、greater_equal、less、less_equal、maximum、minimum、fmax、fmin、argmax、argmin、add、subtract、multiply、divide。

(gh-20913)

NumPy 现在在转换中给出浮点错误

在大多数情况下,NumPy 以前在进行转换时不会给出浮点警告或错误。例如,像这样的转换:

np.array([2e300]).astype(np.float32)  # overflow for float32
np.array([np.inf]).astype(np.int64) 

现在通常会给出浮点警告。这些警告应该警告浮点溢出发生。在将浮点值转换为整数时出现错误时,用户应该期望无效值警告。

用户可以使用np.errstate修改这些警告的行为。

请注意,对于浮点到整数的转换,给出的确切警告可能取决于平台。例如:

arr = np.full(100, fill_value=1000, dtype=np.float64)
arr.astype(np.int8) 

可能会给出等效于的结果(中间转换意味着没有警告):

arr.astype(np.int64).astype(np.int8) 

可能返回未定义结果,并设置警告:

RuntimeWarning: invalid value encountered in cast 

精确行为取决于 C99 标准及其在软件和硬件中的实现。

(gh-21437)

F2PY 支持 value 属性

Fortran 标准要求使用value属性声明的变量必须按值传递而不是按引用传递。F2PY 现在正确支持这种用法模式。因此,在 Fortran 代码中,integer, intent(in), value :: x将生成正确的包装器。

(gh-21807)

为第三方 BitGenerators 添加 pickle 支持

位生成器的 pickle 格式已扩展,以允许每个位生成器在 pickling 期间提供自己的构造函数。NumPy 的先前版本仅支持使用 NumPy 提供的核心一组位生成器之一创建的Generator实例的反序列化。尝试反序列化使用第三方位生成器的Generator将失败,因为在反序列化期间使用的构造函数仅知道 NumPy 中包含的位生成器。

(gh-22014)

arange()现在明确失败,dtype=str

以前,np.arange(n, dtype=str)函数对于n=1n=2有效,但对于其他值的n会引发一个非特定的异常消息。现在,它会引发一个TypeError,提示arange不支持字符串数据类型:

>>> np.arange(2, dtype=str)
Traceback (most recent call last)
 ...
TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>. 

(gh-22055)

numpy.typing协议现在可以在运行时检查

现在在numpy.typing.ArrayLikenumpy.typing.DTypeLike中使用的协议已经正确标记为运行时可检查,使其更容易用于运行时类型检查。

(gh-22357)

F2PY 改进

  • 生成的扩展模块不再使用已弃用的 NumPy-C API

  • 改进了f2py生成的异常消息

  • 大量的错误和flake8警告修复

  • 在签名文件的 C 表达式中可以使用的各种 CPP 宏都以f2py_为前缀。例如,应该使用f2py_len(x)而不是len(x)

  • 引入了一个新的构造character(f2py_len=...)来支持从包装函数返回假定长度的字符串(例如character(len=*))。

引入了一个钩子来支持在读取所有输入文件后重写f2py内部数据结构。例如,这对于 SciPy 支持的 BC 是必需的,其中字符参数在C表达式中被视为字符串参数。

(gh-19388)

IBM zSystems 矢量扩展设施(SIMD)

增加了对 zSystem(z13、z14、z15)的 SIMD 扩展的支持,通过通用内在函数接口。这种支持导致使用通用内在函数实现的所有 SIMD 内核的性能提升,包括以下操作:rint、floor、trunc、ceil、sqrt、absolute、square、reciprocal、tanh、sin、cos、equal、not_equal、greater、greater_equal、less、less_equal、maximum、minimum、fmax、fmin、argmax、argmin、add、subtract、multiply、divide。

(gh-20913)

NumPy 现在在转换中给出浮点错误

在大多数情况下,NumPy 以前在转换过程中发生浮点警告或错误时并不会给出警告。例如,转换如下:

np.array([2e300]).astype(np.float32)  # overflow for float32
np.array([np.inf]).astype(np.int64) 

现在通常会给出浮点警告。这些警告应该警告浮点溢出发生。对于将浮点值转换为整数时出现的错误,用户应该期望无效值警告。

用户可以使用np.errstate修改这些警告的行为。

请注意,对于浮点到整数的转换,给出的确切警告可能取决于平台。例如:

arr = np.full(100, fill_value=1000, dtype=np.float64)
arr.astype(np.int8) 

可能会给出等效于的结果(中间转换意味着不会给出警告):

arr.astype(np.int64).astype(np.int8) 

可能返回未定义的结果,并设置警告:

RuntimeWarning: invalid value encountered in cast 

精确的行为取决于 C99 标准及其在软件和硬件中的实现。

(gh-21437)

F2PY 支持值属性

Fortran 标准要求使用value属性声明的变量必须按值传递而不是按引用传递。F2PY 现在正确支持这种用法模式。因此,Fortran 代码中的integer, intent(in), value :: x将生成正确的包装器。

(gh-21807)

为第三方 BitGenerators 添加了 pickle 支持

位生成器的 pickle 格式已扩展,允许每个位生成器在 pickling 期间提供自己的构造函数。以前的 NumPy 版本只支持使用 NumPy 提供的核心一组位生成器创建的Generator实例进行 unpickling。尝试 unpickle 使用第三方位生成器的Generator将失败,因为在 unpickling 期间使用的构造函数只知道 NumPy 中包含的位生成器。

(gh-22014)

arange()现在明确不支持 dtype=str

以前,np.arange(n, dtype=str)函数对于n=1n=2有效,但对于其他值的n会引发一个非特定的异常消息。现在,它会引发一个TypeError,提示arange不支持字符串 dtype:

>>> np.arange(2, dtype=str)
Traceback (most recent call last)
 ...
TypeError: arange() not supported for inputs with DType <class 'numpy.dtype[str_]'>. 

(gh-22055)

numpy.typing协议现在可以在运行时进行检查

numpy.typing.ArrayLikenumpy.typing.DTypeLike中使用的协议现在正确标记为运行时可检查,使其更容易用于运行时类型检查器。

(gh-22357)

性能改进和变化

更快的np.isinnp.in1d整数数组版本

np.in1d(被np.isin使用)现在可以在传递两个整数数组时切换到更快的算法(速度提高超过 10 倍)。这通常会自动使用,但您可以使用kind="sort"kind="table"来分别强制使用旧方法或新方法。

(gh-12065)

更快的比较运算符

比较函数(numpy.equalnumpy.not_equalnumpy.lessnumpy.less_equalnumpy.greaternumpy.greater_equal)现在更快,因为它们现在使用通用内在函数进行向量化。对于具有 SIMD 扩展 AVX512BW 的 CPU,整数、浮点和布尔数据类型的性能提升分别为 2.57 倍、1.65 倍和 19.15 倍(N=50000)。

(gh-21483)

更快的np.isinnp.in1d整数数组版本

np.in1d(被np.isin使用)现在可以在传递两个整数数组时切换到更快的算法(速度提高超过 10 倍)。这通常会自动使用,但您可以使用kind="sort"kind="table"来分别强制使用旧方法或新方法。

(gh-12065)

更快的比较运算符

比较函数(numpy.equalnumpy.not_equalnumpy.lessnumpy.less_equalnumpy.greaternumpy.greater_equal)现在更快,因为它们现在使用通用指令集进行向量化。对于具有 SIMD 扩展 AVX512BW 的 CPU,整数、浮点和布尔数据类型的性能提升分别为 2.57 倍、1.65 倍和 19.15 倍(N=50000)。

(gh-21483)

变更

更好地报告整数除法溢出

标量和数组的整数除法溢出以前会提供RuntimeWarning,返回值未定义,导致在罕见情况下崩溃:

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32) 

整数除法溢出现在返回输入 dtype 的最小值,并引发以下RuntimeWarning

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: overflow encountered in floor_divide
array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
 -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
 dtype=int32) 

(gh-21506)

masked_invalid现在就地修改掩码

当使用copy=False时,numpy.ma.masked_invalid现在会就地修改输入的掩码数组。这使其表现与masked_where完全相同,并更好地匹配文档。

(gh-22046)

nditer/NpyIter允许分配所有操作数

NumPy 迭代器现在通过 Python 中的np.nditer和 C 中的NpyIter支持分配所有数组。在这种情况下,迭代器形状默认为()。操作数的 dtype 必须提供,因为无法从其他输入中推断出“公共 dtype”。

(gh-22457)

更好地报告整数除法溢出

标量和数组的整数除法溢出以前会提供RuntimeWarning,返回值未定义,导致在罕见情况下崩溃:

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32) 

整数除法溢出现在返回输入 dtype 的最小值,并引发以下RuntimeWarning

>>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
<stdin>:1: RuntimeWarning: overflow encountered in floor_divide
array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
 -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
 dtype=int32) 

(gh-21506)

masked_invalid现在就地修改掩码

当使用copy=False时,numpy.ma.masked_invalid现在会就地修改输入的掩码数组。这使其表现与masked_where完全相同,并更好地匹配文档。

(gh-22046)

nditer/NpyIter允许分配所有操作数

NumPy 迭代器现在通过 Python 中的np.nditer和 C 中的NpyIter支持分配所有数组。在这种情况下,迭代器形状默认为()。必须提供操作数的 dtype,因为无法从其他输入中推断出“公共 dtype”。

(gh-22457)

NumPy 1.23.5 发布说明

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

NumPy 1.23.5 是一个维护版本,修复了在 1.23.4 版本发布后发现的错误,并保持了构建基础设施的最新状态。此版本支持的 Python 版本为 3.8-3.11。

贡献者

本次发布共有 7 位贡献者。名字后带有“+”的人第一次为此版本贡献了补丁。

  • @DWesl

  • Aayush Agrawal +

  • Adam Knapp +

  • Charles Harris

  • Navpreet Singh +

  • Sebastian Berg

  • Tania Allard

合并的拉取请求

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

  • #22489: 测试,维护: 用 setup_method(也包括 teardown)替换大部分 setup

  • #22490: 维护,CI: 切换至 cygwin/cygwin-install-action@v2

  • #22494: 测试: 使 test_partial_iteration_cleanup 更健壮但要求泄漏…

  • #22592: 维护: 确保对大头文件大小的优雅处理

  • #22593: 类型: 数组标志文字的拼写对齐

  • #22594: 错误修复: 修复 random.logseries 的边界检查

  • #22595: 开发: 更新 GH actions 和 Gitpod 的 Dockerfile

  • #22596: CI: 仅在 actions/checkout 中获取

  • #22597: 错误修复: 在 gentype_reduce 中减少引用计数,如果分配了内存…

  • #22625: 错误修复: 在 Windows 上大数组中的 Histogramdd 出现问题

贡献者

本次发布共有 7 位贡献者。名字后带有“+”的人第一次为此版本贡献了补丁。

  • @DWesl

  • Aayush Agrawal +

  • Adam Knapp +

  • Charles Harris

  • Navpreet Singh +

  • Sebastian Berg

  • Tania Allard

合并的拉取请求

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

  • #22489: 测试,维护: 用 setup_method(也包括 teardown)替换大部分 setup

  • #22490: 维护,CI: 切换至 cygwin/cygwin-install-action@v2

  • #22494: 测试: 使 test_partial_iteration_cleanup 更健壮但要求泄漏…

  • #22592: 维护: 确保对大头文件大小的优雅处理

  • #22593: 类型: 数组标志文字的拼写对齐

  • #22594: 错误修复: 修复 random.logseries 的边界检查

  • #22595: DEV: 为 Gitpod 更新 GH actions 和 Dockerfile

  • #22596: CI: 仅在 actions/checkout 中获取

  • #22597: BUG: 在 gentype_reduce 中减少引用计数,如果分配了内存...

  • #22625: BUG: 在 Windows 中,Histogramdd 在大数组上出现问题

NumPy 1.23.4 发布说明

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

NumPy 1.23.4 是一个维护版本,修复了在 1.23.3 版本发布后发现的错误,并保持了构建基础设施的最新状态。主要改进包括修复一些注释边缘情况的问题,修复了长期存在的nested_iters内存泄漏问题,以及修复了对于非常大的数组的复杂向量点积问题。此版本支持的 Python 版本为 3.8-3.11。

注意,如果您使用 Python 3.10.7 进行测试,则 mypy 版本需要为 0.981+,否则类型测试将失败。

贡献者

本次发布共有 8 人做出了贡献。名字后面带有“+”符号的人第一次贡献了补丁。

  • Bas van Beek

  • Charles Harris

  • Matthew Barber

  • Matti Picus

  • Ralf Gommers

  • Ross Barnowski

  • Sebastian Berg

  • Sicheng Zeng +

合并的拉取请求

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

  • #22368: 错误修复:将__array_api_version__添加到numpy.array_api命名空间

  • #22370: 维护:更新 sde 工具包至 9.0,修复下载链接

  • #22382: 构建:在 Azure 上使用 macos-11 镜像,macos-1015 已弃用

  • #22383: 维护:随机数:从“使用 Cython 扩展”中删除get_info

  • #22384: 错误修复:修复具有超过 NPY_CBLAS_CHUNK 元素的复杂向量点积

  • #22387: 修订:再次放宽lookfor的导入尝试/异常

  • #22388: 类型,增强:将numpy.typing协议标记为运行时可检查

  • #22389: 类型,维护:将更多重载改为与 pyright 兼容

  • #22390: 测试,类型:将 mypy 升级至 0.981

  • #22391: 文档:更新分隔符参数描述。

  • #22392: 错误修复:修复 numpy.nested_iters 中的内存泄漏

  • #22413: 发布:为 NumPy 1.23.4 版本做准备。

  • #22424: 测试:修复 aarch64 轮子构建失败的问题。

贡献者

本次发布共有 8 人做出了贡献。名字后面带有“+”符号的人第一次贡献了补丁。

  • Bas van Beek

  • Charles Harris

  • Matthew Barber

  • Matti Picus

  • Ralf Gommers

  • Ross Barnowski

  • Sebastian Berg

  • Sicheng Zeng +

合并的拉取请求

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

  • #22368: 错误修复:将__array_api_version__添加到numpy.array_api命名空间

  • #22370: 维护:更新 sde 工具包至 9.0,修复下载链接

  • #22382: 构建:在 Azure 上使用 macos-11 镜像,macos-1015 已弃用

  • #22383: MAINT: random: 从“使用 Cython 扩展”中删除get_info

  • #22384: BUG: 修复具有超过 NPY_CBLAS_CHUNK 元素的复数向量点积

  • #22387: REV: 再次放宽lookfor的导入尝试/异常

  • #22388: TYP,ENH: 将numpy.typing协议标记为运行时可检查

  • #22389: TYP,MAINT: 将更多重载改为与 pyright 兼容

  • #22390: TST,TYP: 将 mypy 升级至 0.981

  • #22391: DOC: 更新分隔符参数描述。

  • #22392: BUG: numpy.nested_iters中的内存泄漏

  • #22413: REL: 为 NumPy 1.23.4 版本做准备。

  • #22424: TST: 修复 aarch64 wheel 构建失败的问题。

NumPy 1.23.3 发布说明

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

NumPy 1.23.3 是一个维护版本,修复了在 1.23.2 发布后发现的错误。这个版本没有主要主题,主要改进是针对一些下游构建和一些注释边缘情况。此版本支持的 Python 版本为 3.8-3.11。

请注意,我们将在 NumPy 1.23.4 发布时转移到 MacOS 11,目前使用的 10.15 版本将不再受到我们的构建基础设施支持。

贡献者

总共有 16 人为这个版本做出了贡献。名字后面带有“+”的人第一次贡献了补丁。

  • Aaron Meurer

  • Bas van Beek

  • Charles Harris

  • Ganesh Kathiresan

  • Gavin Zhang +

  • Iantra Solari+

  • Jyn Spring 琴春 +

  • Matti Picus

  • Rafael Cardoso Fernandes Sousa

  • Rafael Sousa +

  • Ralf Gommers

  • Rin Cat (鈴猫) +

  • Saransh Chopra +

  • Sayed Adel

  • Sebastian Berg

  • Serge Guelton

合并的拉取请求

总共有 14 个拉取请求被合并到这个版本中。

  • #22136: 构建:将 Python 3.11 wheels 添加到 aarch64 构建中

  • #22148: 维护:更新 setup.py 以支持 Python 3.11。

  • #22155: CI:测试 NumPy 构建兼容旧版本的 GCC(6, 7, 8)

  • #22156: 维护:支持 IBM i 系统

  • #22195: 修复:修复 circleci 构建

  • #22214: 修复:在共享头文件中公开堆排序算法

  • #22215: 修复:支持使用 libunwind 进行回溯

  • #22216: 维护:修复 f2py 中不正确的指针类型使用

  • #22220: 修复:将重载改为与 pyright 兼容

  • #22221: 测试,修复:使用 fork 上下文修复 MacOS savez 测试

  • #22222: 类型,修复:减少 C-based __class_getitem__ 中的参数验证

  • #22223: 测试:确保np.equal.reduce引发TypeError

  • #22224: 修复:修复 numpy.array_api.vecdot 的实现

  • #22230: 修复:更好地报告整数除法溢出(回溯)

贡献者

总共有 16 人为这个版本做出了贡献。名字后面带有“+”的人第一次贡献了补丁。

  • Aaron Meurer

  • Bas van Beek

  • Charles Harris

  • Ganesh Kathiresan

  • Gavin Zhang +

  • Iantra Solari+

  • Jyn Spring 琴春 +

  • Matti Picus

  • Rafael Cardoso Fernandes Sousa

  • Rafael Sousa +

  • Ralf Gommers

  • Rin Cat (鈴猫) +

  • Saransh Chopra +

  • Sayed Adel

  • Sebastian Berg

  • Serge Guelton

合并的拉取请求

总共有 14 个拉取请求被合并到这个版本中。

  • #22136: BLD: 将 Python 3.11 wheels 添加到 aarch64 构建中

  • #22148: MAINT: 为 Python 3.11 更新 setup.py。

  • #22155: CI: 对 NumPy 构建进行针对旧版本的 GCC(6, 7, 8)测试

  • #22156: MAINT: 支持 IBM i 系统

  • #22195: BUG: 修复 circleci 构建

  • #22214: BUG: 在共享头文件中公开堆排序算法

  • #22215: BUG: 支持使用 libunwind 进行回溯

  • #22216: MAINT: 修复 f2py 中不正确的指针类型使用

  • #22220: BUG: 更改重载以与 pyright 兼容。

  • #22221: TST,BUG: 使用 fork 上下文修复 MacOS savez 测试

  • #22222: TYP,BUG: 减少基于 C 的 __class_getitem__ 中的参数验证

  • #22223: TST: 确保 np.equal.reduce 引发 TypeError

  • #22224: BUG: 修复 numpy.array_api.vecdot 的实现

  • #22230: BUG: 更好地报告整数除法溢出(回溯)

NumPy 1.23.2 发布说明

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

NumPy 1.23.2 是一个维护版本,修复了 1.23.1 发布后发现的错误。值得注意的特性包括:

  • Python 3.11 所需的类型更改

  • Python 3.11.0rc1 的 Wheels

本次发布支持的 Python 版本为 3.8-3.11。

贡献者

本次发布共有 9 人做出了贡献。名字后带有“+”符号的人第一次贡献了一个补丁。

  • Alexander Grund +

  • Bas van Beek

  • Charles Harris

  • Jon Cusick +

  • Matti Picus

  • Michael Osthege +

  • Pal Barta +

  • Ross Barnowski

  • Sebastian Berg

合并的拉取请求

本次发布共有 15 个拉取请求被合并。

  • #22030: 增强:为nin=1通用函数添加__array_ufunc__类型支持

  • #22031: 维护,类型:修复np.angle的 dtype 重载

  • #22032: 维护:不让_GenericAlias包装底层类的…

  • #22033: 类型,维护:允许通过整数传递einsum子脚本…

  • #22034: 维护,类型:为np.generic的富比较添加对象重载

  • #22035: 维护,类型:允许squeezetranspose方法…

  • #22036: 错误修复:修复子数组到对象转换的所有权细节

  • #22037: 错误修复:使用Popen静默调用 f77 -v

  • #22038: 错误修复:在深拷贝期间避免空指针错误

  • #22039: 文档:为转换器可调用行为添加版本更改说明。

  • #22057: 维护:安静地上传 anaconda。

  • #22078: 增强:重新排列包含项以在系统安装之上进行测试…

  • #22106: 测试:修复 test_linear_interpolation_formula_symmetric

  • #22107: 错误修复:修复 test_loss_of_precision[complex256]的跳过条件

  • #22115: 构建:构建 python3.11.0rc1 wheels。

贡献者

本次发布共有 9 人做出了贡献。名字后带有“+”符号的人第一次贡献了一个补丁。

  • Alexander Grund +

  • Bas van Beek

  • Charles Harris

  • Jon Cusick +

  • Matti Picus

  • Michael Osthege +

  • Pal Barta +

  • Ross Barnowski

  • Sebastian Berg

合并的拉取请求

本次发布共有 15 个拉取请求被合并。

  • #22030: 增强:为nin=1通用函数添加__array_ufunc__类型支持

  • #22031: 维护,类型:修复np.angle的 dtype 重载

  • #22032: 维护:不让_GenericAlias包装底层类的…

  • #22033: TYP,MAINT: 允许通过整数传递einsum下标…

  • #22034: MAINT,TYP: 为np.generic富比较添加对象重载

  • #22035: MAINT,TYP: 允许squeezetranspose方法…

  • #22036: BUG: 修复子数组到对象转换的所有权细节

  • #22037: BUG: 使用Popen静默调用 f77 -v

  • #22038: BUG: 避免在深拷贝期间出现 NULL 错误

  • #22039: DOC: 为转换器可调用行为添加 versionchanged。

  • #22057: MAINT: 减少 anaconda 上传的信息。

  • #22078: ENH: 重新排列包含内容,以便在系统安装的基础上进行测试…

  • #22106: TST: 修复 test_linear_interpolation_formula_symmetric

  • #22107: BUG: 修复 test_loss_of_precision[complex256]的跳过条件

  • #22115: BLD: 构建 python3.11.0rc1 版本的安装包。

NumPy 1.23.1 发布说明

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

NumPy 1.23.1 是一个维护版本,修复了 1.23.0 发布后发现的错误。值得注意的修复包括:

  • 修复了 float16 NaN 值的 searchsorted

  • 修复了在 Apple M1 上的编译问题

  • 修复了 Slycot 中 crackfortran 运算符支持中的 KeyError

本次发布支持的 Python 版本为 3.8-3.10。

贡献者

本次发布共有 7 位贡献者。名字后��有“+”符号的人第一次为此贡献了补丁。

  • Charles Harris

  • Matthias Koeppe +

  • Pranab Das +

  • Rohit Goswami

  • Sebastian Berg

  • Serge Guelton

  • Srimukh Sripada +

合并的拉取请求

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

  • #21866: BUG: 修复发现的 MachAr 错误(仍在 valgrind 中使用)

  • #21867: BUG: 在排序过程中正确处理 float16 的 NaN 值

  • #21868: BUG: 在np.average的归一化过程中使用keepdims

  • #21869: DOC: 提及np.loadtxtmax_rows行为的更改

  • #21870: BUG: 拒绝大小为 1 的非整数数组删除

  • #21949: BLD: 使 32 位 x86_64 构建中的 can_link_svml 返回 False

  • #21951: BUG: 重新排列 extern “C”以仅适用于函数声明…

  • #21952: BUG: 修复 crackfortran 运算符支持中的 KeyError

贡献者

本次发布共有 7 位贡献者。名字后带有“+”符号的人第一次为此贡献了补丁。

  • Charles Harris

  • Matthias Koeppe +

  • Pranab Das +

  • Rohit Goswami

  • Sebastian Berg

  • Serge Guelton

  • Srimukh Sripada +

合并的拉取请求

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

  • #21866: BUG: 修复发现的 MachAr 错误(仍在 valgrind 中使用)

  • #21867: BUG: 在排序过程中正确处理 float16 的 NaN 值

  • #21868: BUG: 在np.average的归一化过程中使用keepdims

  • #21869: DOC: 提及np.loadtxtmax_rows行为的更改

  • #21870: BUG: 拒绝大小为 1 的非整数数组删除

  • #21949: BLD: 使 32 位 x86_64 构建中的 can_link_svml 返回 False

  • #21951: BUG: 重新排列 extern “C”以仅适用于函数声明…

  • #21952: BUG: 修复 crackfortran 运算符支持中的 KeyError

NumPy 1.23.0 版本发布说明

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

NumPy 1.23.0 版本持续改进处理和提升数据类型(dtypes)的工作,提高执行速度,澄清文档,并废弃旧的弃用功能。亮点包括:

  • 在 C 中实现了 loadtxt,大大提高了其性能。

  • 在 Python 层面暴露 DLPack 以便进行简单的数据交换。

  • 改变了结构化数据类型的提升和比较方式。

  • 对 f2py 的改进。

详细信息如下,

新功能

  • 现在可以使用 numpy.ma.ndenumerate 作为 ndenumerate 的掩码数组专用版本。它提供了一个替代方案,跳过默认情况下的掩码��。

    (gh-20020)

  • 添加了 numpy.from_dlpack 以便使用 DLPack 协议轻松交换数据。它接受实现了 __dlpack____dlpack_device__ 方法的 Python 对象,并返回一个 ndarray 对象,通常是输入对象数据的视图。

    (gh-21145)

弃用功能

  • __array_finalize__ 设置为 None 已被弃用。现在必须是一个方法,并且可能需要在检查 None 或者 NumPy 版本足够新时调用 super().__array_finalize__(obj)

    (gh-20766)

  • 在许多情况下,使用 axis=32 (axis=np.MAXDIMS) 与 axis=None 具有相同的含义。这已被弃用,必须改用 axis=None

    (gh-20920)

  • 钩子函数 PyDataMem_SetEventHook 已被弃用,并且在 tool/allocation_tracking 中演示其用法已被移除。现在通过 tracemalloc 内置到 Python 中来跟踪分配。

    (gh-20394)

  • numpy.distutils 已被弃用,因为 distutils 本身已被弃用。在 Python >= 3.12 的 NumPy 中将不再存在,将在 Python 3.12 发布后的 2 年内完全移除。更多详情,请参阅 numpy.distutils 的状态和迁移建议。

    (gh-20875)

  • 当请求整数 dtype 但值格式为浮点数时,numpy.loadtxt 现在会发出 DeprecationWarning

    (gh-21663)

已过时的弃用功能

  • NpzFile.iteritems()NpzFile.iterkeys() 方法已被移除,作为继续移除 Python 2 兼容性的一部分。这结束了从 1.15 版本开始的弃用。

    (gh-16830)

  • 移除了 alenasscalar 函数。

    (gh-20414)

  • UPDATEIFCOPY数组标志已与枚举NPY_ARRAY_UPDATEIFCOPY一起被移除。相关的(已弃用的)PyArray_XDECREF_ERR也被移除。这些在 1.14 中已被弃用。它们被NPY_ARRAY_WRITEBACKIFCOPY取代,需要在数组被释放之前调用PyArray_ResolveWritebackIfCopy

    (gh-20589)

  • 在类似数组创建期间将引发异常。当对象在访问特殊属性__array____array_interface__时引发异常时,通常会忽略此异常。这种行为在 1.21 中已被弃用,现在将引发异常。

    (gh-20835)

  • 不允许使用非元组值进行多维索引。以前,诸如arr[ind]的代码,其中ind = [[0, 1], [0, 1]]会产生FutureWarning,并被解释为多维索引(即arr[tuple(ind)])。现在,此示例被视为在单个维度上的数组索引(arr[array(ind)])。除元组之外的多维索引在 NumPy 1.15 中已被弃用。

    (gh-21029)

  • 在 F 连续数组中更改为不同大小的 dtype 不再被允许。自 Numpy 1.11.0 起已被弃用。请参见下文对此更改影响的详细解释。

    (gh-20722)

新特性

crackfortran 支持运算符和赋值重载

crackfortran解析器现在可以理解模块中的运算符和赋值定义。它们被添加到模块的body列表中,其中包含一个新键implementedby,列出了实现运算符或赋值的子例程或函数的名称。

(gh-15006)

f2py 支持从派生类型语句中读取访问类型属性

因此,不需要使用publicprivate语句来指定派生类型的访问属性。

(gh-15844)

genfromtxt中添加了新参数ndmin

此参数与numpy.loadtxt中的ndmin的行为相同。

(gh-20500)

np.loadtxt现在支持引号字符和单个转换函数

numpy.loadtxt现在支持额外的quotechar关键字参数,默认未设置。使用quotechar='"'将读取 Excel CSV 方言中使用的带引号字段。

此外,现在可以传递单个可调用对象而不是字典作为converters参数。

(gh-20580)

现在更改为不同大小的 dtype 只需要最后一个轴的连续性

以前,查看具有不同项大小的 dtype 的数组需要整个数组是 C 连续的。这种限制会不必要地强迫用户在能够更改 dtype 之前对非连续数组进行连续复制。

此更改不仅影响ndarray.view,还影响其他构造机制,包括不鼓励直接对ndarray.dtype进行赋值。

此更改取消了关于查看 F 连续数组的弃用,其他地方在发布说明中有描述。

(gh-20722)

F2PY 的确定性输出文件

对于 F77 输入,f2py将无条件生成modname-f2pywrappers.f,尽管这些可能为空。对于自由格式输入,modname-f2pywrappers.fmodname-f2pywrappers2.f90都将无条件生成,可能为空。这允许在cmakemeson等构建系统中编写通用输出规则。通过向f2py传递--skip-empty-wrappers可以恢复旧行为。通过 meson 使用详细使用说明。

(gh-21187)

averagekeepdims参数

将参数keepdims添加到函数numpy.averagenumpy.ma.average中。该参数的含义与numpy.sumnumpy.mean等缩减函数中的含义相同。

(gh-21485)

np.unique添加了新参数equal_nan

np.unique在 1.21 中更改为将所有NaN值视为相等并返回单个NaN。设置equal_nan=False将恢复到 1.21 之前的行为,将NaNs视为唯一。默认为True

(gh-21623)

兼容性说明

1D np.linalg.norm保留浮点输入类型,即使是标量结果

以前,当ord参数不是明确列出的值之一时,例如ord=3时,这将提升为float64

>>> f32 = np.float32([1, 2])
>>> np.linalg.norm(f32, 2).dtype
dtype('float32')
>>> np.linalg.norm(f32, 3)
dtype('float64')  # numpy 1.22
dtype('float32')  # numpy 1.23 

此更改仅影响float32float16向量,ord不是-Inf012Inf

(gh-17709)

结构化(void)dtype 提升和比较的更改

一般来说,NumPy 现在为结构化 dtype 定义了正确但略有限制的提升,通过提升每个字段的子类型而不是引发异常:

>>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
dtype([('f0', '<i4'), ('f1', '<f8')]) 

对于匹配字段名称、顺序和标题的提升,强制执行,但忽略填充。涉及结构化 dtype 的提升现在始终确保所有字段的本机字节顺序(这可能会改变np.concatenate的结果)并确保结果将是“紧凑的”,即所有字段都按顺序连续排列并删除填充。有关更多详细信息,请参见结构比较和提升。

对齐结构的repr现在永远不会打印包括offsetsitemsize的长格式,除非结构包含align=True未保证的填充。

与上述提升逻辑的变化一致,转换安全性已经更新:

  • "equiv"强制匹配名称和标题。由于填充,允许项大小不同。

  • "safe"允许不匹配的字段名称和标题

  • 转换安全性受到每个包含字段的转换安全性的限制。

  • 字段的顺序用于决定每个单独字段的转换安全性。以前,字段名称被使用,只有在名称不匹配时才可能发生不安全的转换。

这里的主要重要变化是现在将名称不匹配视为“安全”转换。

(gh-19226)

NPY_RELAXED_STRIDES_CHECKING已被移除

NumPy 不再能够使用NPY_RELAXED_STRIDES_CHECKING=0进行编译。多年来,放松的步幅一直是默认设置,最初引入该选项是为了实现更平滑的过渡。

(gh-20220)

np.loadtxt已经接受了几处更改

修复了numpy.loadtxt的行计数。loadtxt会忽略文件中完全空行,但会将其计入max_rows。当使用max_rows并且文件包含空行时,这些行现在不会被计入。以前可能出现结果包含少于max_rows行的情况,即使有更多数据可供读取。如果需要旧的行为,可以使用itertools.islice

import itertools
lines = itertools.islice(open("file"), 0, max_rows)
result = np.loadtxt(lines, ...) 

虽然通常更快且改进了很多,但numpy.loadtxt现在可能无法将某些字符串转换为以前成功读取的数字。这些情况中最重要的是:

  • 解析浮点值,如1.0转换为整数现在已经不推荐使用。

  • 解析十六进制浮点数,如0x3p3将失败

  • 以前接受_作为千位分隔符100_000。现在��导致错误。

如果您遇到这些限制,可以通过传递适当的converters=来解决所有问题。NumPy 现在支持传递单个转换器以用于所有列,以使操作更加方便。例如,converters=float.fromhex可以读取十六进制浮点数,converters=int可以读取100_000

此外,错误消息已经得到了一般改进。然而,这意味着错误类型可能会有所不同。特别是,当解析单个条目失败时,现在总是会引发ValueError

(gh-20580)

改进

ndarray.__array_finalize__现在可调用

这意味着子类现在可以使用super().__array_finalize__(obj)而不必担心ndarray是否是它们的超类。实际调用仍然是一个空操作。

(gh-20766)

添加对 VSX4/Power10 的支持

通过 VSX4/Power10 启用,Power ISA 3.1 中提供的新指令可用于加速一些 NumPy 操作,例如 floor_divide、modulo 等。

(gh-20821)

np.fromiter 现在接受对象和子数组

numpy.fromiter 函数现在支持对象和子数组的数据类型。请参阅函数文档以获取示例。

(gh-20993)

数学 C 库特征检测现在使用正确的签名

编译之前会进行检测阶段,以确定底层 libc 是否支持某些数学操作。以前,这段代码没有遵守正确的签名。修复这个问题可以为wasm-ld后端(用于 web assembly 编译)启用编译,并减少警告数量。

(gh-21154)

np.kron 现在保留子类信息

np.kron 现在在计算输入的 Kronecker 乘积时保留子类信息

>>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
>>> np.kron(x,x)
masked_array(
 data=[[1, --, --, --],
 [--, 4, --, --],
 [--, --, 4, --],
 [--, --, --, 16]],
 mask=[[False,  True,  True,  True],
 [ True, False,  True,  True],
 [ True,  True, False,  True],
 [ True,  True,  True, False]],
 fill_value=999999) 

警告

np.kron 输出现在遵循ufunc排序(multiply)以确定输出类类型

>>> class myarr(np.ndarray):
>>>    __array_priority__ = -1
>>> a = np.ones([2, 2])
>>> ma = myarray(a.shape, a.dtype, a.data)
>>> type(np.kron(a, ma)) == np.ndarray
False # Before it was True
>>> type(np.kron(a, ma)) == myarr
True 

(gh-21262)

性能改进和变化

更快的np.loadtxt

numpy.loadtxt 现在通常比以前快得多,因为大部分现在是用 C 实现的。

(gh-20580)

更快的约简运算符

对于连续的基于整数的数组,约简操作如numpy.sumnumpy.prodnumpy.add.reducenumpy.logical_and.reduce现在快得多。

(gh-21001)

更快的np.where

numpy.where 在不可预测/随机输入数据上比以前快得多。

(gh-21130)

NumPy 标量上的操作更快

许多 NumPy 标量上的操作现在显着更快,尽管在某些情况下,稀有操作(例如使用 0-D 数组而不是标量)可能较慢。然而,即使有这些改进,希望为标量获得最佳性能的用户可能希望使用scalar.item()将已知的 NumPy 标量转换为 Python 标量。

(gh-21188)

更快的np.kron

numpy.kron 现在快了约 80%,因为乘积现在使用广播计算。

(gh-21354)

新函数

  • 现在可以使用numpy.ma.ndenumerate作为ndenumerate的掩码数组专用版本。它提供了一个替代方案,跳过默认情况下的掩码值。

    (gh-20020)

  • 添加了numpy.from_dlpack,以便使用 DLPack 协议轻松交换数据。它接受实现__dlpack____dlpack_device__方法的 Python 对象,并返回一个 ndarray 对象,通常是输入对象数据的视图。

    (gh-21145)

弃用

  • __array_finalize__设置为None已被弃用。现在必须是一个方法,并且可能需要在检查None后或者 NumPy 版本足够新时调用super().__array_finalize__(obj)

    (gh-20766)

  • 在许多情况下,使用axis=32axis=np.MAXDIMS)与axis=None具有相同的含义。这已被弃用,必须改用axis=None

    (gh-20920)

  • 钩子函数PyDataMem_SetEventHook已被弃用,并且已删除了在 tool/allocation_tracking 中使用它的演示。现在通过tracemalloc内置到 python 中来跟踪分配。

    (gh-20394)

  • numpy.distutils已被弃用,因为distutils本身已被弃用。在 Python >= 3.12 的 NumPy 中将不再存在,并且将在 Python 3.12 发布后的 2 年内完全移除。更多详情,请参见 Status of numpy.distutils and migration advice。

    (gh-20875)

  • 当请求整数dtype但值格式化为浮点数时,numpy.loadtxt现在将给出DeprecationWarning

    (gh-21663)

过期的弃用功能

  • NpzFile.iteritems()NpzFile.iterkeys()方法已被移除,作为继续移除 Python 2 兼容性的一部分。这标志着从 1.15 开始的弃用已经完成。

    (gh-16830)

  • alenasscalar函数已被移除。

    (gh-20414)

  • UPDATEIFCOPY数组标志已与枚举NPY_ARRAY_UPDATEIFCOPY一起被移除。相关的(已弃用的)PyArray_XDECREF_ERR也已被移除。这些在 1.14 中已被弃用。它们被NPY_ARRAY_WRITEBACKIFCOPY取代,需要在数组被释放之前调用PyArray_ResolveWritebackIfCopy

    (gh-20589)

  • 在类似数组创建期间将引发异常。当对象在访问特殊属性__array____array_interface__时引发异常时,通常会忽略此异常。这种行为在 1.21 中已被弃用,现在将引发异常。

    (gh-20835)

  • 不允许使用非元组值进行多维索引。以前,像arr[ind]这样的代码,其中ind = [[0, 1], [0, 1]]产生了一个FutureWarning,并被解释为多维索引(即arr[tuple(ind)])。现在,此示例被视为在单个维度上的数组索引(arr[array(ind)])。在 NumPy 1.15 中,除元组外的任何多维索引都已被弃用。

    (gh-21029)

  • 不再允许在 F 连续数组中更改为不同大小的 dtype。自 Numpy 1.11.0 起已弃用。请参见下文以了解此更改的影响的详细解释。

    (gh-20722)

新功能

crackfortran 支持运算符和赋值重载

crackfortran解析器现在了解模块中的运算符和赋值定义。它们被添加到包含新键implementedby的模块的body列表中,该键列出了实现运算符或赋值的子例程或函数的名称。

(gh-15006)

f2py 支持从派生类型语句中读取访问类型属性

因此,不需要使用publicprivate语句来指定派生类型的访问属性。

(gh-15844)

genfromtxt中添加了新参数ndmin

此参数的行为与numpy.loadtxt中的ndmin相同。

(gh-20500)

np.loadtxt现在支持引号字符和单个转换函数

numpy.loadtxt现在支持额外的quotechar关键字参数,默认未设置。使用quotechar='"'将读取 Excel CSV 方言中使用的带引号的字段。

此外,现在可以传递单个可调用对象而不是字典给converters参数。

(gh-20580)

更改为不同大小的 dtype 现在只需要最后一个轴是连续的

以前,查看具有不同项大小的 dtype 的数组需要整个数组是 C 连续的。这种限制会不必要地强迫用户在能够更改 dtype 之前对非连续数组进行连续复制。

此更改不仅影响ndarray.view,还影响其他构造机制,包括不鼓励直接对ndarray.dtype进行赋值。

此更改取消了关于查看 F 连续数组的弃用,其他地方在发布说明中有描述。

(gh-20722)

F2PY 的确定性输出文件

对于 F77 输入,f2py将无条件生成modname-f2pywrappers.f,尽管这些可能为空。对于自由格式输入,modname-f2pywrappers.fmodname-f2pywrappers2.f90都将无条件生成,可能为空。这允许在cmakemeson等构建系统中编写通用输出规则。通过向f2py传递--skip-empty-wrappers可以恢复旧行为。通过 meson 使用详细使用说明。

(gh-21187)

averagekeepdims参数

参数keepdims已添加到函数numpy.averagenumpy.ma.average中。该参数的含义与numpy.sumnumpy.mean等缩减函数中的含义相同。

(gh-21485)

np.unique 添加了新参数 equal_nan

np.unique 在 1.21 中更改为将所有 NaN 值视为相等并返回单个 NaN。设置 equal_nan=False 将恢复到 1.21 之前的行为,将 NaN 视为唯一。默认为 True

(gh-21623)

crackfortran 现在支持运算符和赋值重载

crackfortran 解析器现在理解模块中的运算符和赋值定义。它们被添加到包含新键 implementedby 的模块的 body 列表中,列出了实现运算符或赋值的子例程或函数的名称。

(gh-15006)

f2py 支持从派生类型语句中读取访问类型属性

因此,不需要使用 publicprivate 语句来指定派生类型的访问属性。

(gh-15844)

genfromtxt 添加了新参数 ndmin

该参数的行为与 numpy.loadtxt 中的 ndmin 相同。

(gh-20500)

np.loadtxt 现在支持引号字符和单个转换函数

numpy.loadtxt 现在支持额外的 quotechar 关键字参数,默认未设置。使用 quotechar='"' 将读取 Excel CSV 方言中使用的带引号的字段。

此外,现在可以传递单个可调用对象而不是字典作为 converters 参数。

(gh-20580)

更改为不同大小的 dtype 现在只需要最后一个轴是连续的

以前,查看具有不同项大小的 dtype 的数组需要整个数组是 C 连续的。这种限制会不必要地强迫用户在能够更改 dtype 之前对非连续数组进行连续复制。

此更改不仅影响 ndarray.view,还影响其他构造机制,包括不鼓励直接赋值给 ndarray.dtype

此更改终止了关于查看 F 连续数组的弃用,其他地方在发布说明中有描述。

(gh-20722)

F2PY 的确定性输出文件

对于 F77 输入,f2py 将无条件生成 modname-f2pywrappers.f,尽管这些可能为空。对于自由格式输入,modname-f2pywrappers.fmodname-f2pywrappers2.f90 都将无条件生成,并且可能为空。这允许在 cmakemeson 等构建系统中编写通用输出规则。通过向 f2py 传递 --skip-empty-wrappers 可恢复旧行为。通过 meson 使用 详细说明用法。

(gh-21187)

averagekeepdims 参数

函数 numpy.averagenumpy.ma.average 添加了参数 keepdims。该参数在 numpy.sumnumpy.mean 等缩减函数中具有相同的含义。

(gh-21485)

np.unique新增了一个名为equal_nan的参数

np.unique在 1.21 中更改为将所有NaN值视为相等并返回单个NaN。设置equal_nan=False将恢复到 1.21 之前的行为,将NaN视为唯一。默认为True

(gh-21623)

兼容性说明

1D np.linalg.norm保留浮点输入类型,即使是标量结果

以前,当ord参数不是明确列出的值之一时,这将提升为float64,例如ord=3

>>> f32 = np.float32([1, 2])
>>> np.linalg.norm(f32, 2).dtype
dtype('float32')
>>> np.linalg.norm(f32, 3)
dtype('float64')  # numpy 1.22
dtype('float32')  # numpy 1.23 

此更改仅影响float32float16向量,ord不是-Inf012Inf时。

(gh-17709)

结构化(void)dtype 提升和比较的更改

一般来说,NumPy 现在通过提升每个字段的子类型而不是引发异常来定义结构化 dtype 的正确但略有限制的提升:

>>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
dtype([('f0', '<i4'), ('f1', '<f8')]) 

对于匹配字段名称,顺序和标题的提升,但忽略填充。现在,涉及结构化 dtype 的提升总是确保所有字段的本机字节顺序(这可能会改变np.concatenate的结果)并确保结果将是“紧凑的”,即所有字段都按顺序连续排列并删除填充。有关更多详细信息,请参阅结构比较和提升。

对齐结构的repr现在永远不会打印包括offsetsitemsize的长格式,除非结构包含align=True不能保证的填充。

与上述提升逻辑的更改一致,强制转换的安全性已更新:

  • "equiv"强制匹配名称和标题。由于填充的原因,允许项大小不同。

  • "safe"允许字段名称和标题不匹配

  • 强制转换的安全性受到每个包含字段的强制转换安全性的限制。

  • 字段的顺序用于决定每个单独字段的强制转换安全性。以前,使用字段名称,只有在名称不匹配时才可能发生不安全的强制转换。

这里的主要重要变化是现在认为名称不匹配是“安全”的强制转换。

(gh-19226)

NPY_RELAXED_STRIDES_CHECKING已被移除

NumPy 现在不能再使用NPY_RELAXED_STRIDES_CHECKING=0进行编译。多年来,放松的步幅一直是默认设置,最初引入该选项是为了实现更平稳的过渡。

(gh-20220)

np.loadtxt已经接受了几处更改

numpy.loadtxt的行计数已修复。loadtxt会忽略文件中完全空行,但会将其计入max_rows。当使用max_rows并且文件包含空行时,这些行现在不会被计算。以前,可能导致结果包含少于max_rows行,即使有更多数据可供读取。如果需要旧的行为,可以使用itertools.islice

import itertools
lines = itertools.islice(open("file"), 0, max_rows)
result = np.loadtxt(lines, ...) 

虽然通常更快且改进了很多,numpy.loadtxt现在可能无法将某些字符串转换为以前成功读取的数字。这种情况最重要的情况是:

  • 将浮点值(如1.0)解析为整数现在已被弃用。

  • 解析十六进制浮点数,如0x3p3,将失败

  • 以前接受_作为千位分隔符100_000。现在将导致错误。

如果您遇到这些限制,可以通过传递适当的converters=来解决所有问题。NumPy 现在支持传递单个转换器以用于所有列,使其更加方便。例如,converters=float.fromhex可以读取十六进制浮点数,而converters=int可以读取100_000

此外,错误消息已经得到了改进。但是,这意味着错误类型可能会有所不同。特别是,当解析单个条目失败时,现在总是会引发ValueError

(gh-20580)

1D np.linalg.norm保留浮点输入类型,即使是标量结果

以前,当ord参数不是明确列出的值之一时,例如ord=3,这将提升为float64

>>> f32 = np.float32([1, 2])
>>> np.linalg.norm(f32, 2).dtype
dtype('float32')
>>> np.linalg.norm(f32, 3)
dtype('float64')  # numpy 1.22
dtype('float32')  # numpy 1.23 

此更改仅影响具有ord不是-Inf012Inffloat32float16向量。

(gh-17709)

结构化(void)dtype 提升和比较的更改

总的来说,NumPy 现在通过提升每个字段的子类型而不是引发异常来定义正确但略有限制的结构化 dtype 的提升:

>>> np.result_type(np.dtype("i,i"), np.dtype("i,d"))
dtype([('f0', '<i4'), ('f1', '<f8')]) 

对于提升匹配字段名称、顺序和标题是强制的,但会忽略填充。涉及结构化 dtype 的提升现在始终确保所有字段的本机字节顺序(这可能会改变np.concatenate的结果)并确保结果将是“紧凑的”,即所有字段都按顺序连续排列并删除填充。有关更多详细信息,请参阅结构比较和提升。

对齐结构的repr现在永远不会打印包括offsetsitemsize的长形式,除非结构包含align=True未保证的填充。

与上述提升逻辑的变化一致,转换安全性已更新:

  • "equiv"强制匹配名称和标题。由于填充,允许项大小不同。

  • "safe"允许不匹配的字段名称和标题

  • 转换的安全性受到每个包含字段的转换安全性的限制。

  • 字段的顺序用于决定每个字段的强制转换安全性。以前,字段名称被用来判断,当名称不匹配时只有不安全的强制转换才可能发生。

这里的主要重要变化是现在认为名称不匹配是“安全”的强制转换。

(gh-19226)

NPY_RELAXED_STRIDES_CHECKING已被移除

NumPy 不再能使用NPY_RELAXED_STRIDES_CHECKING=0进行编译。多年来,宽松步幅一直是默认设置,该选项最初是为了实现更平稳的过渡。

(gh-20220)

np.loadtxt已经进行了几处更改

numpy.loadtxt的行计数已修复。loadtxt会忽略文件中完全空白的行,但会将其计入max_rows。当使用max_rows并且文件包含空白行时,这些行现在将不被计算。以前,可能出现结果包含少于max_rows行的情况,即使有更多数据可供读取。如果需要旧的行为,可以使用itertools.islice

import itertools
lines = itertools.islice(open("file"), 0, max_rows)
result = np.loadtxt(lines, ...) 

虽然通常更快且改进了很多,但numpy.loadtxt现在可能无法将先前成功读取的某些字符串转换为数字。这些情况中最重要的是:

  • 将浮点值(如1.0)解析为整数现在已被弃用。

  • 解析十六进制浮点数,如0x3p3,将失败

  • 以前接受_作为千位分隔符100_000。现在将导致错误。

如果您遇到这些限制,可以通过传递适当的converters=来解决。NumPy 现在支持传递单个转换器以用于所有列,以使这更加方便。例如,converters=float.fromhex可以读取十六进制浮点数,而converters=int将能够读取100_000

此外,错误消息已经得到了一般性的改进。然而,这意味着错误类型可能会有所不同。特别是,当解析单个条目失败时,现在总是会引发ValueError

(gh-20580)

改进

ndarray.__array_finalize__现在可调用

这意味着子类现在可以使用super().__array_finalize__(obj)而不必担心ndarray是否是它们的超类。实际调用仍然是一个空操作。

(gh-20766)

增加对 VSX4/Power10 的支持

通过启用 VSX4/Power10,Power ISA 3.1 中可用的新指令可以用于加速一些 NumPy 操作,例如,floor_divide,modulo 等。

(gh-20821)

np.fromiter现在接受对象和子数组

numpy.fromiter函数现在支持对象和子数组数据类型。请参阅函数文档以获取示例。

(gh-20993)

数学 C 库特性检测现在使用正确的签名

编译之前会进行检测阶段,以确定底层的 libc 是否支持某些数学运算。之前的代码没有遵守正确的签名。修复这个问题可以使得wasm-ld后端(用于 Web 汇编编译)可以进行编译,并减少警告数量。

(gh-21154)

np.kron现在保留子类信息

np.kron现在在计算输入的 Kronecker 积时保留子类信息,比如掩码数组

>>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
>>> np.kron(x,x)
masked_array(
 data=[[1, --, --, --],
 [--, 4, --, --],
 [--, --, 4, --],
 [--, --, --, 16]],
 mask=[[False,  True,  True,  True],
 [ True, False,  True,  True],
 [ True,  True, False,  True],
 [ True,  True,  True, False]],
 fill_value=999999) 

警告

np.kron输出现在遵循ufunc排序(multiply)以确定输出类别类型

>>> class myarr(np.ndarray):
>>>    __array_priority__ = -1
>>> a = np.ones([2, 2])
>>> ma = myarray(a.shape, a.dtype, a.data)
>>> type(np.kron(a, ma)) == np.ndarray
False # Before it was True
>>> type(np.kron(a, ma)) == myarr
True 

(gh-21262)

ndarray.__array_finalize__现在是可调用的

这意味着子类现在可以使用super().__array_finalize__(obj)而不必担心ndarray是否是它们的超类。实际调用仍然是一个空操作。

(gh-20766)

增加对 VSX4/Power10 的支持

通过 VSX4/Power10 启用,Power ISA 3.1 中可用的新指令可以用于加速一些 NumPy 操作,例如,floor_divide,modulo 等。

(gh-20821)

np.fromiter现在接受对象和子数组

numpy.fromiter函数现在支持对象和子数组数据类型。请查看函数文档以获取示例。

(gh-20993)

数学 C 库特性检测现在使用正确的签名

编译之前会进行检测阶段,以确定底层的 libc 是否支持某些数学运算。之前的代码没有遵守正确的签名。修复这个问题可以使得wasm-ld后端(用于 Web 汇编编译)可以进行编译,并减少警告数量。

(gh-21154)

np.kron现在保留子类信息

np.kron现在在计算输入的 Kronecker 积时保留子类信息,比如掩码数组

>>> x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
>>> np.kron(x,x)
masked_array(
 data=[[1, --, --, --],
 [--, 4, --, --],
 [--, --, 4, --],
 [--, --, --, 16]],
 mask=[[False,  True,  True,  True],
 [ True, False,  True,  True],
 [ True,  True, False,  True],
 [ True,  True,  True, False]],
 fill_value=999999) 

警告

np.kron输出现在遵循ufunc排序(multiply)以确定输出类别类型

>>> class myarr(np.ndarray):
>>>    __array_priority__ = -1
>>> a = np.ones([2, 2])
>>> ma = myarray(a.shape, a.dtype, a.data)
>>> type(np.kron(a, ma)) == np.ndarray
False # Before it was True
>>> type(np.kron(a, ma)) == myarr
True 

(gh-21262)

性能改进和变更

更快的np.loadtxt

numpy.loadtxt现在通常比以前快得多,因为现在大部分是用 C 实现的。

(gh-20580)

更快的减少运算符

对于连续的基于整数的数组,减少运算如numpy.sumnumpy.prodnumpy.add.reducenumpy.logical_and.reduce现在快得多。

(gh-21001)

更快的np.where

numpy.where现在在不可预测/随机输入数据上比以前快得多。

(gh-21130)

NumPy 标量的操作更快了

许多对 NumPy 标量的操作现在显着更快,尽管在某些情况下,一些罕见的操作(例如使用 0-D 数组而不是标量)可能会更慢。然而,即使有了这些改进,希望为其标量获得最佳性能的用户,可能希望使用scalar.item()将已知的 NumPy 标量转换为 Python 标量。

(gh-21188)

更快的np.kron

numpy.kron现在快了约 80%,因为产品现在是使用广播计算的。

(gh-21354)

更快的np.loadtxt

numpy.loadtxt现在通常比以前快得多,因为现在大部分都是用 C 实现的。

(gh-20580)

更快的缩减运算符

对连续整数数组的缩减操作,如numpy.sumnumpy.prodnumpy.add.reducenumpy.logical_and.reduce,现在快得多。

(gh-21001)

更快的np.where

在不可预测/随机输入数据上,numpy.where现在比以前快得多。

(gh-21130)

更快的 NumPy 标量操作

许多对 NumPy 标量的操作现在显着更快,尽管在某些情况下,一些罕见的操作(例如使用 0-D 数组而不是标量)可能会更慢。然而,即使有了这些改进,希望为其标量获得最佳性能的用户,可能希望使用scalar.item()将已知的 NumPy 标量转换为 Python 标量。

(gh-21188)

更快的np.kron

numpy.kron现在快了约 80%,因为产品现在是使用广播计算的。

(gh-21354)

NumPy 1.22.4 发布说明

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

NumPy 1.22.4 是一个维护版本,修复了在 1.22.3 发布后发现的错误。此外,此版本的 wheels 使用了最近发布的 Cython 0.29.30 构建,这应该修复了与调试报告的问题。

此版本支持的 Python 版本为 3.8-3.10。请注意,Mac wheels 基于 OS X 10.15 而不是之前 NumPy 发布周期中使用的 10.9。

贡献者

总共有 12 人为这个版本做出了贡献。名字后面带有“+”的人第一次为此版本贡献了补丁。

  • Alexander Shadchin

  • Bas van Beek

  • Charles Harris

  • Hood Chatham

  • Jarrod Millman

  • John-Mark Gurney

  • Junyan Ou

  • Mariusz Felisiak

  • Ross Barnowski

  • Sebastian Berg

  • Serge Guelton

  • Stefan van der Walt

合并的拉取请求

总共有 22 个拉取请求合并到了这个版本中。

  • #21191: 类型、错误:修复np.lib.stride_tricks在…下重新导出

  • #21192: 测试:将 mypy 从 0.931 升级到 0.940

  • #21243: 维护:明确重新导出numpy._typing中的类型

  • #21245: 维护:为 CI 文档构建指定 sphinx、numpydoc 版本

  • #21275: 错误:修复拼写错误

  • #21277: 增强、构建:修复 wasm 的数学特性检测

  • #21350: 维护:修复失败的 simd 和 cygwin 测试。

  • #21438: 维护:修复 Python 3.8 32 位 Windows 测试失败。

  • #21444: 错误:根据#21386 添加 linux 保护

  • #21445: 错误:允许旧数据类型再次转换为日期时间

  • #21446: 错误:使 frombuffer 中的 mmap 处理更安全

  • #21447: 错误:停止使用 Python 3.11 中已弃用的 PyBytesObject.ob_shash。

  • #21448: 增强:引入 numpy.core.setup_common.NPY_CXX_FLAGS

  • #21472: 错误:确保编译错误被正确引发

  • #21473: 错误:修复分段错误

  • #21474: 维护:更新文档要求

  • #21475: 维护:在 clang 上使用no_sanitize("alignment")标记npy_memchr

  • #21512: 文档:建议 - 使文档首页卡片更相似…

  • #21525: 维护:更新 Cython 版本至 0.29.30。

  • #21536: 错误:修复构建配置期间的 GCC 错误

  • #21541: REL:为 NumPy 1.22.4 版本发布做准备。

  • #21547: 维护:跳过在 PyPy 上失败的测试。

贡献者

总共有 12 人为这个版本做出了贡献。名字后面带有“+”符号的人第一次为补丁做出了贡献。

  • 亚历山大·沙德钦

  • 巴斯·范贝克

  • 查尔斯·哈里斯

  • 胡德·查塔姆

  • 贾罗德·米尔曼

  • 约翰-马克·格尼 +

  • 吴俊岩 +

  • 马里乌什·费利西亚克 +

  • 罗斯·巴诺夫斯基

  • 塞巴斯蒂安·伯格

  • 塞尔日·盖尔顿

  • 史蒂芬·范德瓦尔特

合并的拉取请求

总共有 22 个拉取请求被合并到这个版本中。

  • #21191: TYP, BUG:修复 np.lib.stride_tricks 重新导出的问题…

  • #21192: TST:将 mypy 从 0.931 升级到 0.940

  • #21243: 维护:明确重新导出 numpy._typing 中的类型

  • #21245: 维护:为 CI 文档构建指定 sphinx、numpydoc 版本

  • #21275: BUG:修复拼写错误

  • #21277: ENH, BLD:修复 wasm 的数学特性检测

  • #21350: 维护:修复 simd 和 cygwin 测试失败。

  • #21438: 维护:修复 Python 3.8 32 位 Windows 测试失败。

  • #21444: BUG:根据 #21386 添加 Linux 保护

  • #21445: BUG:允许旧数据类型再次转换为日期时间

  • #21446: BUG:在 frombuffer 中使 mmap 处理更安全

  • #21447: BUG:停止使用 Python 3.11 中已弃用的 PyBytesObject.ob_shash。

  • #21448: ENH:引入 numpy.core.setup_common.NPY_CXX_FLAGS

  • #21472: BUG:确保编译错误被正确引发

  • #21473: BUG:修复分段错误

  • #21474: 维护:更新文档要求

  • #21475: 维护:在 clang 上用 no_sanitize("alignment") 标记 npy_memchr

  • #21512: DOC:建议 - 使文档首页卡片更相似…

  • #21525: 维护:更新 Cython 版本至 0.29.30。

  • #21536: BUG:修复构建配置期间的 GCC 错误

  • #21541: REL:为 NumPy 1.22.4 版本发布做准备。

  • #21547: 维护:跳过在 PyPy 上失败的测试。

NumPy 1.22.3 发布说明

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

NumPy 1.22.3 是一个维护版本,修复了在 1.22.2 发布后发现的错误。最显著的修复可能是针对 DLPack 的修复。可能会引起一些问题的是不允许将字符串作为逻辑 ufunc 的输入。目前尚未决定如何处理这些函数中的字符串,最好的办法是简单地禁止它们,直到做出决定为止。这不应该对旧代码造成问题。

本次发布支持的 Python 版本为 3.8-3.10。请注意,Mac 的安装包现在基于 OS X 10.14 而不是之前 NumPy 版本周期中使用的 10.9。10.14 是苹果支持的最旧版本。

贡献者

本次发布共有 9 位贡献者。名字后带有“+”的人第一次为该版本贡献了补丁。

  • @GalaxySnail +

  • Alexandre de Siqueira

  • Bas van Beek

  • Charles Harris

  • Melissa Weber Mendonça

  • Ross Barnowski

  • Sebastian Berg

  • Tirth Patel

  • Matthieu Darbois

合并的拉取请求

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

  • #21048: 维护:在 travis 上使用“3.10”而不是“3.10-dev”。

  • #21106: 类型,维护:明确允许np.concatenate中的数组类序列

  • #21137: 构建,文档:跳过损坏的 ipython 8.1.0

  • #21138: 错误修复,增强:np._from_dlpack:导出正确的设备信息

  • #21139: 错误修复:修复 numba DUFuncs 添加循环被拾取的问题

  • #21140: 错误修复:修复对具有非零维度的空 ndarray 的反序列化…

  • #21141: 错误修复:使用 ThreadPoolExecutor 而不是 ThreadPool

  • #21142: API:禁止在逻辑 ufunc 中使用字符串

  • #21143: 维护,文档:修复 SciPy 的 intersphinx 链接

  • #21148: 错误修复,增强:np._from_dlpack:导出任意步幅大小为 1 的数组…

贡献者

本次发布共有 9 位贡献者。名字后带有“+”的人第一次为该版本贡献了补丁。

  • @GalaxySnail +

  • Alexandre de Siqueira

  • Bas van Beek

  • Charles Harris

  • Melissa Weber Mendonça

  • Ross Barnowski

  • Sebastian Berg

  • Tirth Patel

  • Matthieu Darbois

合并的拉取请求

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

  • #21048: 维护:在 travis 上使用“3.10”而不是“3.10-dev”。

  • #21106: 类型,维护:明确允许np.concatenate中的数组类序列

  • #21137: 构建,文档:跳过损坏的 ipython 8.1.0

  • #21138: BUG, ENH: np._from_dlpack: 导出正确的设备信息

  • #21139: BUG: 修复 numba DUFuncs 添加循环时的问题

  • #21140: BUG: 修复对具有非零维度的空 ndarray 进行反序列化的问题…

  • #21141: BUG: 使用 ThreadPoolExecutor 代替 ThreadPool

  • #21142: API: 禁止在逻辑 ufuncs 中使用字符串

  • #21143: MAINT, DOC: 修复 SciPy intersphinx 链接

  • #21148: BUG,ENH: np._from_dlpack: 导出任意步幅大小为 1 的数组…

NumPy 1.22.2 发布说明

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

NumPy 1.22.2 是一个维护版本,修复了 1.22.1 发布后发现的错误。值得注意的修复包括:

  • 为下游项目和其他平台进行了几处构建相关的修复。

  • 各种注释修复/添加。

  • Windows 上的 Numpy wheels 将使用 1.41 工具链,修复了在 Windows 上使用 NumPy 提供的库的项目中出现的下游链接问题。

  • 处理 CVE-2021-41495 的投诉。

本次发布支持的 Python 版本为 3.8-3.10。

贡献者

本次发布共有 14 人贡献。名字后带有“+”符号的人是第一次贡献补丁。

  • Andrew J. Hesford +

  • Bas van Beek

  • Brénainn Woodsend +

  • Charles Harris

  • Hood Chatham

  • Janus Heide +

  • Leo Singer

  • Matti Picus

  • Mukulika Pahari

  • Niyas Sait

  • Pearu Peterson

  • Ralf Gommers

  • Sebastian Berg

  • Serge Guelton

合并的拉取请求

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

  • #20842: BLD: 添加 NPY_DISABLE_SVML 环境变量以退出 SVML

  • #20843: BUG: 修复使用 Py_LIMITED_API 构建第三方扩展的问题

  • #20844: TYP: 修复 pyright 无法推断realimag的问题…

  • #20845: BUG: 修复比较函数签名

  • #20906: BUG: 避免在导入 numpy.testing 时导入numpy.distutils

  • #20907: MAINT: 移除过时的 mingw32 fseek 支持

  • #20908: TYP: 放宽np.vectorize的返回类型

  • #20909: BUG: 修复使用 Mingw 构建时 f2py 的线程定义

  • #20910: BUG: distutils: 修复构建混合 C/Fortran 扩展的问题

  • #20912: DOC,TST: 根据新版本修复 Pandas 代码示例

  • #20935: TYP, MAINT: 为flatiter.__setitem__添加注释

  • #20936: MAINT, TYP: 在fromnumeric.pyi中添加了缺失的 where 类型提示

  • #20937: BUG: 修复 build_ext 与非 numpy 扩展的交互问题

  • #20938: BUG: 修复 Windows/arm64 目标缺失的内在函数

  • #20945: REL: 为 NumPy 1.22.2 发布做准备。

  • #20982: MAINT: f2py: 不生成触发-Wsometimes-uninitialized的代码。

  • #20983: BUG: 修复 reduce 没有初始值时的错误返回类型

  • #20984: ENH: 重新审查 PyArray_DescrNew 的返回值

  • #20985: MAINT: 更容忍 setuptools >= 60

  • #20986: BUG: 修复错误的返回位置。

  • #20992: MAINT: 进一步验证返回值的小修复

贡献者

总共有 14 人为这个版本做出了贡献。名字后面带有“+”符号的人第一次贡献了一个补丁。

  • Andrew J. Hesford +

  • Bas van Beek

  • Brénainn Woodsend +

  • Charles Harris

  • Hood Chatham

  • Janus Heide +

  • Leo Singer

  • Matti Picus

  • Mukulika Pahari

  • Niyas Sait

  • Pearu Peterson

  • Ralf Gommers

  • Sebastian Berg

  • Serge Guelton

合并的拉取请求

总共有 21 个拉取请求被合并到这个版本中。

  • #20842: BLD: 添加 NPY_DISABLE_SVML 环境变量以退出 SVML

  • #20843: BUG: 修复使用 Py_LIMITED_API 构建第三方扩展的问题

  • #20844: TYP: 修复 pyright 无法推断 realimag 的问题…

  • #20845: BUG: 修复比较函数签名

  • #20906: BUG: 避免在导入 numpy.testing 时导入 numpy.distutils

  • #20907: MAINT: 移除过时的 mingw32 fseek 支持

  • #20908: TYP: 放宽 np.vectorize 的返回类型

  • #20909: BUG: 修复使用 Mingw 构建时 f2py 的线程定义问题

  • #20910: BUG: distutils: 修复构建混合 C/Fortran 扩展的问题

  • #20912: DOC,TST: 根据新版本修复 Pandas 代码示例

  • #20935: TYP, MAINT: 为 flatiter.__setitem__ 添加注释

  • #20936: MAINT, TYP: 在 fromnumeric.pyi 中添加缺失的 where 类型提示

  • #20937: BUG: 修复 build_ext 与非 numpy 扩展的交互问题

  • #20938: BUG: 修复 Windows/arm64 目标缺失的内在函数

  • #20945: REL: 为 NumPy 1.22.2 版本做准备。

  • #20982: MAINT: f2py: 不生成触发 -Wsometimes-uninitialized 的代码。

  • #20983: BUG: 修复在没有初始值的情况下 reduce 的错误返回类型

  • #20984: ENH: 重新审查 PyArray_DescrNew 的返回值

  • #20985: MAINT: 更容忍 setuptools >= 60

  • #20986: BUG: 修复错误的返回位置。

  • #20992: MAINT: 进一步验证返回值的小修复

NumPy 1.22.1 发布说明

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

NumPy 1.22.1 是一个维护版本,修复了在 1.22.0 发布后发现的 bug。值得注意的修复包括:

  • 修复 f2PY 文档字符串问题(SciPy)

  • 修复减少类型问题(AstroPy)

  • 修复各种类型错���。

本次发布支持的 Python 版本为 3.8-3.10。

贡献者

总共有 14 位贡献者为此版本做出了贡献。名字旁边带有“+”的人第一次为补丁做出了贡献。

  • Arryan Singh

  • Bas van Beek

  • Charles Harris

  • Denis Laxalde

  • Isuru Fernando

  • Kevin Sheppard

  • Matthew Barber

  • Matti Picus

  • Melissa Weber Mendonça

  • Mukulika Pahari

  • Omid Rajaei +

  • Pearu Peterson

  • Ralf Gommers

  • Sebastian Berg

合并的拉取请求

总共有 20 个拉取请求合并到此版本中。

  • #20702: 维护,文档:发布 1.22.0 后修复。

  • #20703: 文档,错误:使用 png 替代 svgs。

  • #20704: 文档:修复用户指南首页上的链接

  • #20714: 错误修复:恢复 vc141 支持

  • #20724: 错误修复:修复多维参数的数组维度求解器…

  • #20725: 类型:将__array_namespace__的类型注解更改为 ModuleType

  • #20726: 类型,维护:允许ndindex接受整数元组

  • #20757: 错误修复:在减少中放宽 dtype 标识检查

  • #20763: 类型:允许时间操作函数接受datetimedelta

  • #20768: 类型:放宽ndarray.__array_finalize__的类型

  • #20795: 维护:如果 setuptools 版本过新,则引发 RuntimeError。

  • #20796: 错误,文档:修复 SciPy 文档构建警告

  • #20797: 文档:修复发布说明中的 OpenBLAS 版本

  • #20798: 性能优化:优化数组检查以限制为 0、1 的值

  • #20805: 错误修复:修复 reduce-likes 总是尊重 out(并存在于…

  • #20806: 错误修复:array_api.argsort(descending=True) 尊重相对…

  • #20807: 错误修复:允许array_api中的幂相关函数接受整数输入

  • #20814: 文档:在主页中引用 NumPy,而不是 pandas

  • #20815: 文档:更新版权至 2022 [许可证]

  • #20819: 错误修复:在 array_api 设置中返回正确形状的逆索引…

贡献者

本次发布共有 14 位贡献者。名字后带有“+”的人第一次为补丁做出了贡献。

  • Arryan Singh

  • Bas van Beek

  • Charles Harris

  • Denis Laxalde

  • Isuru Fernando

  • Kevin Sheppard

  • Matthew Barber

  • Matti Picus

  • Melissa Weber Mendonça

  • Mukulika Pahari

  • Omid Rajaei +

  • Pearu Peterson

  • Ralf Gommers

  • Sebastian Berg

已合并的拉取请求

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

  • #20702: MAINT, DOC: 1.22.0 发布后的修复。

  • #20703: DOC, BUG: 使用 png 替代 svgs。

  • #20704: DOC: 修复了用户指南首页的链接

  • #20714: BUG: 恢复了 vc141 支持

  • #20724: BUG: 修复了多维参数的数组维度求解器...

  • #20725: TYP: 将 __array_namespace__ 的类型注释更改为 ModuleType

  • #20726: TYP, MAINT: 允许 ndindex 接受整数元组

  • #20757: BUG: 放宽了缩减操作中的 dtype 标识检查

  • #20763: TYP: 允许时间操作函数接受 datetimedelta...

  • #20768: TYP: 放宽了 ndarray.__array_finalize__ 的类型

  • #20795: MAINT: 如果 setuptools 版本过新,则引发 RuntimeError。

  • #20796: BUG, DOC: 修复了 SciPy 文档构建警告

  • #20797: DOC: 修复了发布说明中的 OpenBLAS 版本

  • #20798: PERF: 优化了对有界 0,1 值的数组检查

  • #20805: BUG: 修复了 reduce-likes 总是尊重 out 并存在于...的问题

  • #20806: BUG: array_api.argsort(descending=True) 尊重相对...

  • #20807: BUG: 允许 array_api 中的 pow 相关函数接受整数输入

  • #20814: DOC: 在主页中引用 NumPy,而不是 pandas

  • #20815: DOC: 将版权更新至 2022 年 [许可证]

  • #20819: BUG: 在 array_api set...中返回正确形状的逆索引

NumPy 1.22.0 发布说明

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

NumPy 1.22.0 是一个重要的发布版本,涵盖了来自 153 位贡献者的工作,分布在 609 个拉取请求中。有许多改进,重点包括:

  • 主命名空间的注释基本完成。上游是一个不断变化的目标,所以可能会有进一步的改进,但主要工作已经完成。这可能是本次发布中最为用户可见的增强功能。

  • 提供了拟议的 Array-API 的初步版本。这是创建可在应用程序(如 CuPy 和 JAX)中使用的标准函数集的一步。

  • NumPy 现在具有 DLPack 后端。DLPack 为数组(张量)数据提供了一个通用的交换格式。

  • quantilepercentile 和相关函数的新方法。这些新方法提供了文献中常见的方法的完整集合。

  • 通用函数已重构以实现大部分NEP 43。这也解锁了对未来 DType API 进行实验的能力。

  • 用于下游项目的新可配置分配器。

除了为常用函数提供 SIMD 支持、改进 F2PY 和改进文档之外,还有持续进行的工作。

本次发布支持的 Python 版本为 3.8-3.10,Python 3.7 已被删除。请注意,Mac wheels 现在基于 OS X 10.14 而不是之前 NumPy 发布周期中使用的 10.9。10.14 是 Apple 支持的最旧版本。还请注意,32 位 wheels 仅提供给 Windows 上的 Python 3.8 和 3.9,所有其他 wheels 都是 64 位的,因为 Ubuntu、Fedora 和其他 Linux 发行版已经放弃了 32 位支持。所有 64 位 wheels 也与 64 位整数 OpenBLAS 链接,这应该解决那些使用真正巨大数组时遇到的偶发问题。

过期的弃用

已删除了不推荐使用的数值样式 dtype 字符串。

使用字符串 "Bytes0""Datetime64""Str0""Uint32""Uint64" 作为 dtype 现在会引发 TypeError

(gh-19539)

npyio 中的 loadsndfromtxtmafromtxt 的弃用已过期

numpy.loads 在 v1.15 中已弃用,建议用户改用 pickle.loadsndfromtxtmafromtxt 在 v1.17 中都已弃用 - 用户应该改用 numpy.genfromtxt,并使用适当的值作为 usemask 参数。

(gh-19615)

弃���

在 mrecords 中使用 delimiter 而不是 delimitor 作为 kwarg

已将 numpy.ma.mrecords.fromtextfile() 的拼写错误关键字参数 delimitor 更改为 delimiter,使用它将会发出弃用警告。

(gh-19921)

将布尔值 kth 传递给(arg-)partition 已被弃用

numpy.partitionnumpy.argpartition 以前会接受 kth 参数的布尔值,随后会被转换为整数。这种行为现在已被弃用。

(gh-20000)

np.MachAr 类已被弃用

numpy.MachAr 类和 finfo.machar <numpy.finfo> 属性已被弃用。鼓励用户直接从相应的 numpy.finfo 属性中访问感兴趣的属性。

(gh-20201)

兼容性说明

Distutils 在 clang 上强制使用严格的浮点模型

NumPy 现在在 clang 上设置了 -ftrapping-math 选项,以强制执行正确的浮点错误处理对于通用函数。否则,Clang 默认为非 IEEE 和 C99 兼容行为。这个更改(使用等效但更新的 -ffp-exception-behavior=strict)在 NumPy 1.21 中尝试过,但实际上从未被使用。

(gh-19479)

移除了复杂类型的 floor division 支持

复杂类型的 floor division 现在会导致 TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types... 

(gh-19135)

numpy.vectorize 函数现在产生与基本函数相同的输出类

当一个尊重 numpy.ndarray 子类的函数被使用 numpy.vectorize 向量化时,向量化函数现在也对子类安全,即使在给定签名的情况下(即,创建 gufunc 时):输出类将与首次调用基础函数时返回的类相同。

(gh-19356)

不再支持 Python 3.7

Python 支持已被移除。这是相当严格的,有些更改需要 Python >= 3.8。

(gh-19665)

复杂数据类型的 str/repr 现在在标点符号后包含空格。

np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) 的 repr 现在是 dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),而以前在冒号后和字段之间省略了空格。

旧行为可以通过 np.set_printoptions(legacy="1.21") 恢复。

(gh-19687)

修正了PCG64DSXMPCG64中的advance

修复了PCG64DSXMPCG64advance方法中的一个 bug。该 bug 仅影响在步长大于(2^{64})时的结果,这种情况发生在不支持 128 位整数的平台上(例如 Windows 和 32 位 Linux)。

(gh-20049)

更改生成随机 32 位浮点变量的方式

生成 32 位浮点值的均匀分布中存在一个 bug,导致随机变量的最低有效位始终为 0。这个问题已经修复。

此更改影响由 random.Generator 方法 randomstandard_normalstandard_exponentialstandard_gamma 生成的变量,但仅当 dtype 指定为 numpy.float32 时。

(gh-20314)

C API 更改

掩码内部循环不再可以自定义

掩码内部循环选择器现在不再使用。在极少数情况下自定义时会发出警告。

我们不希望任何代码使用这个功能。如果您确实使用了它,必须在更新的 NumPy 版本上取消选择器。还请联系 NumPy 开发人员,我们预计会提供一种新的、更具体的机制。

定制是一个从未实现的功能的一部分,允许更快的掩码操作。

(gh-19259)

实验性地暴露未来的 DType 和 UFunc API

新的头文件 experimental_public_dtype_api.h 允许尝试未来的 API,以改进通用函数和特别是用户 DType 的支持。此时建议使用 NumPy 的开发版本进行实验,因为预计会有一些变化,并且将解锁新功能。

(gh-19919)

新功能

NEP 49 可配置分配器

NEP 49 中详细描述的那样,用于分配 ndarray 数据段的函数可以更改。策略可以在全局或上下文中设置。有关更多信息,请参阅 NEP 和 NumPy 中的内存管理 参考文档。还添加了 NUMPY_WARN_IF_NO_MEM_POLICY 覆盖,以警告在设置 NPY_ARRAY_OWNDATA 时危险地转移所有权的使用。

(gh-17582)

实现了 NEP 47(采用数组 API 标准)

作为 numpy.array_api 添加了 NEP 47(采用数组 API 标准)的初始实现。该实现是实验性的,并在导入时会发出 UserWarning,因为 数组 API 标准 仍处于草案状态。numpy.array_api 是数组 API 标准的符合实现,也是最小的,意味着只实现了标准要求的那些函数和行为(请参阅 NEP 了解更多信息)。鼓励希望使用数组 API 标准的库使用 numpy.array_api 来检查他们只使用了标准符合实现中保证存在的功能。

(gh-18585)

现在可以从注释块生成 C/C++ API 参考文档

此功能在生成过程中依赖于 Doxygen,并且依赖于 Breathe 与 Sphinx 集成。

(gh-18884)

通过一个 mypy 插件分配平台特定的 c_intp 精度。

mypy 插件,在 numpy/numpy#17843 中引入,现已扩展:插件现在负责设置 numpy.ctypeslib.c_intp 的平台特定精度,后者用作各种 numpy.ndarray.ctypes 属性的数据类型。

没有插件,上述类型将默认为 ctypes.c_int64

要启用插件,必须将其添加到其 mypy 配置文件 中:

[mypy]
plugins  =  numpy.typing.mypy_plugin 

(gh-19062)

添加了符合 NEP 47 的 dlpack 支持。

添加了一个 ndarray.__dlpack__() 方法,返回一个包装在 PyCapsule 中的 dlpack C 结构。还添加了一个 np._from_dlpack(obj) 函数,其中 obj 支持 __dlpack__(),并返回一个 ndarray

(gh-19083)

keepdims 可选参数已添加到 numpy.argminnumpy.argmax

keepdims 参数已添加到 numpy.argminnumpy.argmax。如果设置为 True,则被减少的轴将保留在结果中作为大小为一的维度。结果数组具有相同数量的维度,并将与输入数组进行广播。

(gh-19211)

bit_count 用于计算整数中的 1 位数。

计算输入绝对值中的 1 位数。这适用于所有 numpy 整数类型。类似于内置的 int.bit_count 或 C++ 中的 popcount

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7 

(gh-19355)

ndimaxis 属性已添加到 numpy.AxisError 中。

ndimaxis 参数现在也作为每个 numpy.AxisError 实例的属性存储。

(gh-19459)

windows/arm64 目标的初步支持。

numpy 增加了对 windows/arm64 目标的支持。请注意,OpenBLAS 对于 windows/arm64 目标尚不可用。

(gh-19513)

增加了对 LoongArch 的支持。

LoongArch 是一种新的指令集,numpy 在 LoongArch 架构上编译失败,因此添加了该提交。

(gh-19527)

添加了一个 .clang-format 文件。

Clang-format 是一个 C/C++ 代码格式化工具,与添加的 .clang-format 文件一起,它生成的代码与 NumPy C_STYLE_GUIDE 接近,可供一般使用。由于使用了几个新功能,需要 Clang-format 版本 12+,它在 Fedora 34 和 Ubuntu Focal 等其他发行版中可用。

(gh-19754)

is_integer 现在适用于 numpy.floatingnumpy.integer

基于 Python 中的floatint,numpy 浮点和整数类型现在支持float.is_integer。如果数字是有限的整数值,则返回True,否则返回False

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True 

(gh-19803)

用于 Fortran 维度规范的符号解析器

在 f2py 中添加了一个新的符号解析器,以正确解析维度规范。该解析器是未来改进的基础,并与 Draft Fortran 202x 兼容。

(gh-19805)

ndarraydtypenumber现在可以在运行时进行下标访问

模仿PEP 585numpy.ndarraynumpy.dtypenumpy.number类现在可以在 Python 3.9 及更高版本中进行下标访问。因此,以前只允许在.pyi 存根文件中或借助from __future__ import annotations的帮助下的表达式现在也在运行时合法。

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]] 

(gh-19879)

改进

ctypeslib.load_library现在可以接受任何路径类对象

现在所有参数都可以接受任何path-like object。这包括字符串、字节和实现__fspath__协议的对象。

(gh-17530)

finfo添加smallest_normalsmallest_subnormal属性

属性smallest_normalsmallest_subnormal作为finfo类的扩展可用于任何浮点数据类型。要使用这些新属性,请写np.finfo(np.float64).smallest_normalnp.finfo(np.float64).smallest_subnormal

(gh-18536)

numpy.linalg.qr接受堆叠矩阵作为输入

numpy.linalg.qr能够为堆叠矩阵生成结果。此外,QR 分解的实现已从 Python 转移到 C。

(gh-19151)

numpy.fromregex现在接受os.PathLike实现

numpy.fromregex现在接受实现__fspath__<os.PathLike>协议的对象,例如pathlib.Path

(gh-19680)

quantilepercentile添加新方法

quantilepercentile现在具有method=关键字参数,支持 13 种不同的方法。这取代了interpolation=关键字参数。

这些方法现在与科学文献和 R 语言中的九种方法保持一致。其余方法是默认“linear”方法的以前不连续的变体。

请查看numpy.percentile的文档以获取更多信息。

(gh-19857)

已向nan<x>函数添加了缺失的参数

一些nan<x>函数以前缺少其<x>对应函数中存在的参数,例如 numpy.mean中存在的where参数在numpy.nanmean中不存在。

现在已将以下参数添加到nan<x>函数中:

  • nanmin: initialwhere

  • nanmax: initialwhere

  • nanargmin: keepdimsout

  • nanargmax: keepdimsout

  • nansum: initialwhere

  • nanprod: initialwhere

  • nanmean: where

  • nanvar: where

  • nanstd: where

(gh-20027)

对主要 Numpy 命名空间进行注释

从 1.20 版本开始,NumPy 库的部分部分已包含 PEP 484 类型注释;对剩余函数进行注释仍在进行中。随着 1.22 版本的发布,主要 NumPy 命名空间的这一过程已经完成,现在已完全注释。

除了主命名空间外,一些子包也包含注释。其中包括numpy.testingnumpy.linalgnumpy.random(自 1.21 版本起可用)。

(gh-20217)

使用 AVX-512 对 umath 模块进行矢量化

通过利用英特尔短向量数学库(SVML),18 个 umath 函数(exp2log2log10expm1log1pcbrtsincostanarcsinarccosarctansinhcoshtanharcsinharccosharctanh)使用 AVX-512 指令集进行矢量化,适用于单精度和双精度实现。此更改目前仅适用于 Linux 用户和具有 AVX-512 指令集的处理器。对于单精度和双精度函数,平均加速比分别为 32 倍和 14 倍。

(gh-19478)

OpenBLAS v0.3.18

更新测试和 wheels 中使用的 OpenBLAS 至 v0.3.18

(gh-20058)

过期的弃用功能

已删除弃用的数字样式 dtype 字符串

使用字符串"Bytes0", "Datetime64", "Str0", "Uint32", 和 "Uint64"作为 dtype 现在会引发TypeError错误。

(gh-19539)

npyio 中loadsndfromtxtmafromtxt的弃用已过期

numpy.loads在 v1.15 中已弃用,建议用户改用pickle.loadsndfromtxtmafromtxt在 v1.17 中都已弃用 - 用户应该改用numpy.genfromtxt,并使用适当的值作为usemask参数。

(gh-19615)

已删除弃用的数字样式 dtype 字符串

使用字符串"Bytes0", "Datetime64", "Str0", "Uint32", 和 "Uint64"作为 dtype 现在会引发TypeError错误。

(gh-19539)

npyio 中loadsndfromtxtmafromtxt的弃用已过期

numpy.loads在 v1.15 中已被弃用,建议用户改用pickle.loadsndfromtxtmafromtxt在 v1.17 中都已被弃用 - 用户应该改用numpy.genfromtxt,并使用usemask参数的适当值。

(gh-19615)

弃用

在 mrecords 中使用 delimiter 而不是 delimitor 作为 kwarg

numpy.ma.mrecords.fromtextfile()的拼写错误关键字参数delimitor已更改为delimiter,使用它将会发出弃用警告。

(gh-19921)

将布尔值kth传递给(arg-)partition 已被弃用

numpy.partitionnumpy.argpartition以前会接受kth参数的布尔值,随后会被转换为整数。这种行为现已被弃用。

(gh-20000)

np.MachAr类已被弃用

numpy.MachAr类和finfo.machar <numpy.finfo>属性已被弃用。鼓励用户直接从相应的numpy.finfo属性中访问感兴趣的属性。

(gh-20201)

在 mrecords 中使用 delimiter 而不是 delimitor 作为 kwarg

numpy.ma.mrecords.fromtextfile()的拼写错误关键字参数delimitor已更改为delimiter,使用它将会发出弃用警告。

(gh-19921)

将布尔值kth传递给(arg-)partition 已被弃用

numpy.partitionnumpy.argpartition以前会接受kth参数的布尔值,随后会被转换为整数。这种行为现已被弃用。

(gh-20000)

np.MachAr类已被弃用

numpy.MachAr类和finfo.machar <numpy.finfo>属性已被弃用。鼓励用户直接从相应的numpy.finfo属性中访问感兴趣的属性。

(gh-20201)

兼容性说明

Distutils 在 clang 上强制使用严格的浮点模型

NumPy 现在在 clang 上设置了-ftrapping-math选项,以强制正确处理通用函数的浮点错误处理。否则,Clang 默认为非 IEEE 和 C99 符合行为。这种更改(使用等效但更新的-ffp-exception-behavior=strict)曾在 NumPy 1.21 中尝试过,但实际上从未被使用过。

(gh-19479)

移除了复数类型的地板除法支持

复数类型的地板除法现在将导致TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types... 

(gh-19135)

numpy.vectorize函数现在产生与基本函数相同的输出类

当一个尊重numpy.ndarray子类的函数被使用numpy.vectorize向量化时,对于给定签名的情况(即创建gufunc时),向量化函数现在也将对子类安全:输出类将与对底层函数的第一次调用返回的类相同。

(gh-19356)

Python 3.7 不再受支持

Python 支持已被删除。这是相当严格的,有些更改需要 Python >= 3.8。

(gh-19665)

复数 dtype 的 str/repr 现在在标点符号后包含空格。

np.dtype({"names": ["a"], "formats": [int], "offsets": [2]})的 repr 现在是dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),而以前在冒号后和字段之间省略了空格。

旧行为可以通过np.set_printoptions(legacy="1.21")恢复。

(gh-19687)

修正了PCG64DSXMPCG64中的advance

修复了PCG64DSXMPCG64advance方法中的一个错误。该错误仅影响在步长大于(2^{64})时的结果,这种情况发生在不支持 128 位整数的平台上(例如 Windows 和 32 位 Linux)。

(gh-20049)

更改生成随机 32 位浮点变量的方式

存在一个 bug,即从均匀分布生成 32 位浮点值的最低有效位始终为 0。已修复此问题。

此更改影响由random.Generator方法randomstandard_normalstandard_exponentialstandard_gamma生成的变量,但仅当 dtype 指定为numpy.float32时。

(gh-20314)

Distutils 在 clang 上强制使用严格的浮点模型

NumPy 现在在 clang 上设置了-ftrapping-math选项,以强制执行通用函数的正确浮点错误处理。否则,Clang 默认为非 IEEE 和 C99 符合的行为。这种变化(使用等效但更新的-ffp-exception-behavior=strict)曾在 NumPy 1.21 中尝试过,但实际上从未被使用。

(gh-19479)

移除了复数类型的地板除法支持

复数类型的地板除法现在将导致TypeError

>>> a = np.arange(10) + 1j* np.arange(10)
>>> a // 1
TypeError: ufunc 'floor_divide' not supported for the input types... 

(gh-19135)

numpy.vectorize函数现在产生与基本函数相同的输出类

当一个尊重numpy.ndarray子类的函数被使用numpy.vectorize向量化时,对于给定签名的情况(即创建gufunc时),向量化函数现在也将对子类安全:输出类将与对底层函数的第一次调用返回的类相同。

(gh-19356)

Python 3.7 不再受支持

Python 支持已被移除。这是相当严格的,有些更改要求 Python >= 3.8。

(gh-19665)

复数 dtype 的 str/repr 现在在标点符号后包含空格

np.dtype({"names": ["a"], "formats": [int], "offsets": [2]})的 repr 现在是dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}),而以前在冒号后和字段之间省略了空格。

可通过np.set_printoptions(legacy="1.21")恢复旧行为。

(gh-19687)

修正了PCG64DSXMPCG64中的advance

修复了PCG64DSXMPCG64advance方法中的一个 bug。该 bug 仅影响在步长大于(2^{64})时在不支持 128 位整数的平台上的结果(例如 Windows 和 32 位 Linux)。

(gh-20049)

更改生成随机 32 位浮点变量的方式

在从均匀分布生成 32 位浮点值时存在 bug,导致随机变量的最低有效位始终为 0。已修复此问题。

此更改影响由random.Generator方法randomstandard_normalstandard_exponentialstandard_gamma生成的变量,但仅当 dtype 指定为numpy.float32时。

(gh-20314)

C API 更改

无法再自定义掩码内部循环

掩码内部循环选择器现在不再使用。在极少情况下,如果进行了自定义,将发出警告。

我们不希望任何代码使用此功能。如果您确实使用了,请在更新的 NumPy 版本上取消选择器。还请联系 NumPy 开发人员,我们预计会提供一种新的、更具体的机制。

自定义是一个从未实现的功能的一部分,旨在实现更快的掩码操作。

(gh-19259)

实验性暴露未来的 DType 和 UFunc API

新的头文件experimental_public_dtype_api.h允许尝试使用未来的 API 来改进通用函数,特别是用户 DType 的支持。目前建议使用 NumPy 的开发版本进行实验,因为预计会有一些变化并且将解锁新功能。

(gh-19919)

无法再自定义掩码内部循环

掩码内部循环选择器现在不再使用。在极少情况下,如果进行了自定义,将发出警告。

我们不希望任何代码使用此功能。如果您确实使用了,请在更新的 NumPy 版本上取消选择器。还请联系 NumPy 开发人员,我们预计会提供一种新的、更具体的机制。

自定义是一个从未实现的功能的一部分,旨在实现更快的掩码操作。

(gh-19259)

实验性暴露未来的 DType 和 UFunc API

新的头文件experimental_public_dtype_api.h允许尝试未来用于改进通用函数和特别是用户 DType 支持的 API。此时建议使用 NumPy 的开发版本进行实验,因为预计会有一些更改并将解锁新功能。

(gh-19919)

新特性

NEP 49 可配置分配器

NEP 49中详细说明,可以更改用于分配 ndarray 数据段的函数。策略可以在全局或上下文中设置。有关更多信息,请参阅 NEP 和 NumPy 中的内存管理参考文档。还添加了NUMPY_WARN_IF_NO_MEM_POLICY覆盖,以警告通过设置NPY_ARRAY_OWNDATA来传递所有权的危险用法。

(gh-17582)

实现 NEP 47(采用数组 API 标准)

NEP 47的初始实现(采用数组 API 标准)已添加为numpy.array_api。该实现是实验性的,并在导入时会发出 UserWarning,因为数组 API 标准仍处于草案状态。numpy.array_api是数组 API 标准的符合实现,也是最小的,意味着只实现了标准要求的那些函数和行为(详细信息请参阅 NEP)。鼓励希望使用数组 API 标准的库使用numpy.array_api来检查他们只使用标准符合实现中保证存在的功能。

(gh-18585)

现在可以从注释块生成 C/C++ API 参考文档

此功能依赖于Doxygen在生成过程中以及Breathe与 Sphinx 集成。

(gh-18884)

通过 mypy 插件分配平台特定的c_intp精度

mypy插件,引入自numpy/numpy#17843,再次被扩展:该插件现在负责设置numpy.ctypeslib.c_intp的平台特定精度,后者被用作各种numpy.ndarray.ctypes属性的数据类型。

没有插件,上述类型将默认为ctypes.c_int64

要启用插件,必须将其添加到其 mypy配置文件中:

[mypy]
plugins  =  numpy.typing.mypy_plugin 

(gh-19062)

添加 NEP 47 兼容的 dlpack 支持

添加了一个 ndarray.__dlpack__() 方法,返回一个包装在 PyCapsule 中的 dlpack C 结构。还添加了一个 np._from_dlpack(obj) 函数,其中 obj 支持 __dlpack__(),并返回一个 ndarray

(gh-19083)

keepdims 可选参数已添加到 numpy.argminnumpy.argmax

keepdims 参数已添加到 numpy.argminnumpy.argmax 中。如果设置为 True,则被减少的轴将保留在结果中作为大小为一的维度。结果数组具有相同数量的维度,并将与输入数组进行广播。

(gh-19211)

bit_count 用于计算整数中的 1 位数

计算输入的绝对值中的 1 位数。这适用于所有 numpy 整数类型。类似于内置的 int.bit_count 或 C++ 中的 popcount

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7 

(gh-19355)

ndimaxis 属性已添加到 numpy.AxisError

ndimaxis 参数现在也作为每个 numpy.AxisError 实例的属性存储。

(gh-19459)

windows/arm64 目标的初步支持

numpy 增加了对 windows/arm64 目标的支持。请注意,windows/arm64 目标尚不支持 OpenBLAS

(gh-19513)

增加了对龙芯架构的支持

LoongArch 是一种新的指令集,numpy 在 LoongArch 架构上编译失败,因此添加了该提交。

(gh-19527)

添加了一个 .clang-format 文件

Clang-format 是一个 C/C++ 代码格式化工具,与新增的 .clang-format 文件一起,它生成的代码与 NumPy C_STYLE_GUIDE 接近,可供一般使用。由于使用了几个新功能,需要 Clang-format 版本 12+,它在 Fedora 34 和 Ubuntu Focal 等其他发行版中可用。

(gh-19754)

is_integer 现在适用于 numpy.floatingnumpy.integer

基于 Python 中 floatint 的对应物,numpy 浮点和整数类型现在支持 float.is_integer。如果数字是有限的整数值,则返回 True,否则返回 False

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True 

(gh-19803)

用于 Fortran 维度规范的符号解析器

在 f2py 中添加了一个新的符号解析器,以正确解析维度规范。该解析器是未来改进的基础,并提供了与 Draft Fortran 202x 的兼容性。

(gh-19805)

ndarraydtypenumber 现在支持运行时下标

模仿 PEP 585numpy.ndarraynumpy.dtypenumpy.number 类现在可以在 Python 3.9 及更高版本中进行下标操作。因此,以前仅允许在 .pyi 存根文件中或通过 from __future__ import annotations 的帮助下允许的表达式现在也在运行时合法。

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]] 

(gh-19879)

NEP 49 可配置的分配器

NEP 49 中详细说明的,可以更改用于分配 ndarray 数据段的函数。策略可以在全局或上下文中设置。有关更多信息,请参阅 NEP 和 NumPy 中的内存管理 参考文档。还添加了一个 NUMPY_WARN_IF_NO_MEM_POLICY 覆盖,以警告危险的所有权转移设置 NPY_ARRAY_OWNDATA

(gh-17582)

实现 NEP 47(采用数组 API 标准)

NEP 47 的初始实现(采用数组 API 标准)已添加为 numpy.array_api。该实现是实验性的,并将在导入时发出 UserWarning,因为 数组 API 标准 仍处于草案状态。numpy.array_api 是数组 API 标准的符合实现,也是最小的,意味着只实现了标准要求的那些功能和行为(请参阅 NEP 了解更多信息)。鼓励希望使用数组 API 标准的库使用 numpy.array_api 来检查他们只使用标准符合实现中保证存在的功能。

(gh-18585)

现在可以从注释块生成 C/C++ API 参考文档

此功能依赖于 Doxygen 的生成过程和 Breathe 与 Sphinx 集成。

(gh-18884)

通过一个 mypy 插件分配特定于平台的 c_intp 精度

numpy/numpy#17843 中引入的 mypy 插件再次扩展:插件现在负责设置 numpy.ctypeslib.c_intp 的特定于平台的精度,后者用作各种 numpy.ndarray.ctypes 属性的数据类型。

没有插件,上述类型将默认为 ctypes.c_int64

要启用插件,必须将其添加到其 mypy 配置文件 中:

[mypy]
plugins  =  numpy.typing.mypy_plugin 

(gh-19062)

添加 NEP 47 兼容的 dlpack 支持

添加了一个ndarray.__dlpack__()方法,返回一个包装在PyCapsule中的dlpack C 结构。同时添加了一个np._from_dlpack(obj)函数,其中obj支持__dlpack__(),并返回一个ndarray

(gh-19083)

keepdims可选参数已添加到numpy.argminnumpy.argmax

keepdims参数已添加到numpy.argminnumpy.argmax。如果设置为True,则被减少的轴将作为大小为一的维度保留在结果中。结果数组具有相同数量的维度,并将与输入数组进行广播。

(gh-19211)

bit_count用于计算整数中 1 位的数量

计算输入绝对值中 1 位的数量。适用于所有 numpy 整数类型。类似于内置的int.bit_count或 C++中的popcount

>>> np.uint32(1023).bit_count()
10
>>> np.int32(-127).bit_count()
7 

(gh-19355)

ndimaxis属性已添加到numpy.AxisError

ndimaxis参数现在也作为每个numpy.AxisError实例的属性存储。

(gh-19459)

windows/arm64目标的初步支持

numpy现已支持 Windows/arm64 目标。请注意,Windows/arm64 目标尚不支持OpenBLAS

(gh-19513)

添加了对 LoongArch 的支持

LoongArch 是一种新的指令集,numpy 在 LoongArch 架构上的编译失败,因此添加了该提交。

(gh-19527)

添加了一个.clang-format文件

Clang-format 是一个 C/C++代码格式化工具,与新增的.clang-format文件一起,它生成与 NumPy C_STYLE_GUIDE 接近的代码,可供一般使用。由于使用了几个新功能,需要 Clang-format 版本 12+,它在 Fedora 34 和 Ubuntu Focal 等其他发行版中可用。

(gh-19754)

is_integer现在适用于numpy.floatingnumpy.integer

基于 Python 中floatint的对应物,numpy 浮点和整数类型现在支持float.is_integer。如果数字是有限的整数值,则返回True,否则返回False

>>> np.float32(-2.0).is_integer()
True
>>> np.float64(3.2).is_integer()
False
>>> np.int32(-2).is_integer()
True 

(gh-19803)

Fortran 维度规范的符号解析器

为了正确解析维度规范,f2py 添加了一个新的符号解析器。该解析器是未来改进的基础,并与 Draft Fortran 202x 兼容。

(gh-19805)

ndarraydtypenumber现在可以在运行时进行下标访问

模仿PEP 585numpy.ndarraynumpy.dtypenumpy.number类现在可以在 Python 3.9 及更高版本中进行下标操作。因此,以前只允许在.pyi 存根文件中或借助from __future__ import annotations的帮助下的表达式现在也在运行时合法。

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]] 

(gh-19879)

改进

ctypeslib.load_library现在可以接受任何类似路径的对象

现在所有参数都可以接受任何path-like object. 这包括字符串、字节和实现__fspath__协议的对象。

(gh-17530)

finfo添加smallest_normalsmallest_subnormal属性

属性smallest_normalsmallest_subnormal作为任何浮点数据类型的finfo类的扩展可用。要使用这些新属性,写np.finfo(np.float64).smallest_normalnp.finfo(np.float64).smallest_subnormal

(gh-18536)

numpy.linalg.qr接受堆叠矩阵作为输入

numpy.linalg.qr能够为堆叠矩阵产生结果。此外,QR 分解的实现已从 Python 转移到 C。

(gh-19151)

numpy.fromregex现在接受os.PathLike实现

numpy.fromregex现在接受实现__fspath__<os.PathLike>协议的对象,例如 pathlib.Path

(gh-19680)

添加了quantilepercentile的新方法

quantilepercentile现在有一个method=关键字参数,支持 13 种不同的方法。这取代了interpolation=关键字参数。

这些方法现在与科学文献和 R 语言中的九种方法保持一致。其余方法是默认的“linear”方法的以前不连续的变体。

请查看numpy.percentile的文档以获取更多信息。

(gh-19857)

nan<x>函数中添加了缺失的参数

一些nan<x>函数以前缺少其<x>对应函数中存在的参数,例如 numpy.mean中存在的where参数���numpy.nanmean中缺失。

现在已将以下参数添加到nan<x>函数中:

  • nanmin:initialwhere

  • nanmax:initialwhere

  • nanargmin:keepdimsout

  • nanargmax:keepdimsout

  • nansum:initialwhere

  • nanprod:initialwhere

  • nanmean:where

  • nanvar:where

  • nanstd:where

(gh-20027)

对主要的 Numpy 命名空间进行注释

从 1.20 版本开始,NumPy 库的部分部分已包含 PEP 484 类型注释;对其余函数进行注释仍在进行中。随着 1.22 版本的发布,主要 NumPy 命名空间的此过程已完成,现在已完全注释。

除主命名空间外,一些子包也包含注释。其中包括numpy.testingnumpy.linalgnumpy.random(自 1.21 版本起可用)。

(gh-20217)

使用 AVX-512 对 umath 模块进行矢量化

通过利用英特尔短向量数学库(SVML),18 个 umath 函数(exp2log2log10expm1log1pcbrtsincostanarcsinarccosarctansinhcoshtanharcsinharccosharctanh)使用 AVX-512 指令集进行矢量化,适用于单精度和双精度实现。此更改目前仅对 Linux 用户和具有 AVX-512 指令集的处理器启用。它为单精度和双精度函数提供平均加速比分别为 32 倍和 14 倍。

(gh-19478)

OpenBLAS v0.3.18

更新用于测试和轮毂中的 OpenBLAS 至 v0.3.18

(gh-20058)

ctypeslib.load_library现在可以接受任何类似路径的对象

现在所有参数都可以接受任何类似路径的对象。这包括字符串、字节和实现__fspath__协议的对象。

(gh-17530)

smallest_normalsmallest_subnormal属性添加到finfo

属性smallest_normalsmallest_subnormal作为任何浮点数据类型的finfo类的扩展可用。要使用这些新属性,请写np.finfo(np.float64).smallest_normalnp.finfo(np.float64).smallest_subnormal

(gh-18536)

numpy.linalg.qr接受堆叠矩阵作为输入

numpy.linalg.qr能够为堆叠矩阵生成结果。此外,QR 分解的实现已从 Python 转移到 C。

(gh-19151)

numpy.fromregex现在接受os.PathLike实现

numpy.fromregex现在接受实现__fspath__<os.PathLike>协议的对象,例如 pathlib.Path

(gh-19680)

quantilepercentile添加新方法

quantilepercentile现在有一个method=关键字参数,支持 13 种不同的方法。这取代了interpolation=关键字参数。

这些方法现在与科学文献和 R 语言中的九种方法保持一致。其余方法是默认“linear”方法的以前不连续的变体。

有关更多信息,请参阅numpy.percentile的文档。

(gh-19857)

已添加缺失的参数到nan<x>函数中

一些以前的nan<x>函数缺少其基于<x>的对应函数中存在的参数,例如numpy.mean中存在where参数,但在numpy.nanmean中不存在。

现在已将以下参数添加到nan<x>函数中:

  • nanmin: initial & where

  • nanmax: initial & where

  • nanargmin: keepdims & out

  • nanargmax: keepdims & out

  • nansum: initial & where

  • nanprod: initial & where

  • nanmean: where

  • nanvar: where

  • nanstd: where

(gh-20027)

注释主要 Numpy 命名空间

从 1.20 版本开始,NumPy 库的部分部分已包含 PEP 484 类型注释;对其余函数进行注释仍在进行中。随着 1.22 版本的发布,主要 NumPy 命名空间的这一过程已完成,现在已完全注释。

除主命名空间外,一些子包也包含注释。其中包括numpy.testingnumpy.linalgnumpy.random(自 1.21 版本起可用)。

(gh-20217)

使用 AVX-512 对 umath 模块进行矢量化

通过利用英特尔短向量数学库(SVML),18 个 umath 函数(exp2log2log10expm1log1pcbrtsincostanarcsinarccosarctansinhcoshtanharcsinharccosharctanh)使用 AVX-512 指令集进行矢量化,适用于单精度和双精度实现。此更改目前仅适用于 Linux 用户和具有 AVX-512 指令集的处理器。对于单精度和双精度函数,平均加速比分别为 32 倍和 14 倍。

(gh-19478)

OpenBLAS v0.3.18

更新测试和轮子中使用的 OpenBLAS 至 v0.3.18

(gh-20058)

NumPy 1.21.6 发布说明

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

NumPy 1.21.6 是一个非常小的版本,实现了两个目标:

  • 撤销了将 C++ 代码错误地回溯到 1.21.5 中。

  • 为 Python 3.10 提供了 32 位 Windows 版本。

提供 32 位版本的目的是为了让最古老支持的 numpy 用户的生活更加轻松。

NumPy 1.21.5 发布说明

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

NumPy 1.21.5 是一个维护版本,修复了在 1.21.4 版本发布后发现的一些 bug,并进行了一些维护工作以延长 1.21.x 的生命周期。此版本支持的 Python 版本为 3.7-3.10。如果您想使用 gcc-11 编译自己的版本,您需要使用 gcc-11.2+ 以避免问题。

贡献者

本次发布共有 7 位贡献者。名字后带有“+”的人第一次为此版本贡献了补丁。

  • Bas van Beek

  • Charles Harris

  • Matti Picus

  • Rohit Goswami

  • Ross Barnowski

  • Sayed Adel

  • Sebastian Berg

合并的拉取请求

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

  • #20357: 维护: 不转发 _GenericAlias__(deep)copy__ 调用…

  • #20462: BUG: 修复 float16 einsum 快速路径使用错误的临时变量

  • #20463: BUG, DIST: 当可执行文件不存在时打印操作系统错误消息

  • #20464: 构建: 在启动之前验证编译 C++ 源码的能力…

  • #20465: BUG: 强制 npymath 尊重 ``npy_longdouble

  • #20466: BUG: 修复无法创建对齐的空结构化数据类型的失败

  • #20467: 增强: 提供一个方便的函数来替换 npy_load_module

  • #20495: 维护: 更新支持 python3.10 的 wheel 版本

  • #20497: BUG: 在 F2PY 转换中正确清除错误

  • #20613: 开发: 添加一个 warningfilter 以修复 pytest 工作流。

  • #20618: 维护: 至少不崩溃的帮助 boost::python 库

贡献者

本次发布共有 7 位贡献者。名字后带有“+”的人第一次为此版本贡献了补丁。

  • Bas van Beek

  • Charles Harris

  • Matti Picus

  • Rohit Goswami

  • Ross Barnowski

  • Sayed Adel

  • Sebastian Berg

合并的拉取请求

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

  • #20357: 维护: 不转发 _GenericAlias__(deep)copy__ 调用…

  • #20462: BUG: 修复 float16 einsum 快速路径使用错误的临时变量

  • #20463: BUG, DIST: 当可执行文件不存在时打印操作系统错误消息

  • #20464: 构建: 在启动之前验证编译 C++ 源码的能力…

  • #20465: BUG: 强制 npymath 尊重 ``npy_longdouble

  • #20466: BUG: 修复无法创建对齐的空结构化数据类型的失败

  • #20467: ENH: 提供一个方便的函数来替换 npy_load_module

  • #20495: MAINT: 更新支持 Python 3.10 版本的 wheel

  • #20497: BUG: 在 F2PY 转换中正确清除错误

  • #20613: DEV: 添加警告过滤器以修复 pytest 工作流程

  • #20618: MAINT: 至少不崩溃地帮助 boost::python 库

NumPy 1.21.4 发布说明

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

NumPy 1.21.4 是一个维护版本,修复了在 1.21.3 之后发现的一些错误。这里最重要的修复是修复了 NumPy 头文件,使它们在包含在 Mac universal2 轮子中时可以同时适用于 x86_64 和 M1 硬件。以前,头文件只适用于 M1,这导致为 x86_64 扩展构建时出现问题。在 Python 3.10 之前,由于存在 x86_64 的薄轮子,因此没有看到这个问题。此版本还为 Python 3.10 提供了薄 x86_64 Mac 轮子。

本次发布支持的 Python 版本为 3.7-3.10. 如果您想使用 gcc-11 编译自己的版本,您需要使用 gcc-11.2+ 以避免问题。

贡献者

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

  • 巴斯·范·贝克

  • 查尔斯·哈里斯

  • 伊苏鲁·费尔南多

  • 马修·布雷特

  • 赛义德·阿德尔

  • 塞巴斯蒂安·伯格

  • 傅立业(克里斯·傅) +

合并的拉取请求

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

  • #20278: BUG: 修复类型存根中 dtype 的阴影引用

  • #20293: BUG: 修复 universal2 构建的头文件

  • #20294: BUG: VOID_nonzero 有时可能会改变对齐标志

  • #20295: BUG: 不要在非对齐数组上使用非零快速路径

  • #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)

  • #20297: BUG, SIMD: 修复 64 位/8 位整数除以标量的问题

  • #20298: BUG, SIMD: 解决在 MSVC 上广播 SIMD 64 位整数的问题…

  • #20300: REL: 为 NumPy 1.21.4 版本做准备。

  • #20302: TST: 修复 Arrayterator 类型测试失败

贡献者

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

  • 巴斯·范·贝克

  • 查尔斯·哈里斯

  • 伊苏鲁·费尔南多

  • 马修·布雷特

  • 赛义德·阿德尔

  • 塞巴斯蒂安·伯格

  • 傅立业(克里斯·傅) +

合并的拉取请求

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

  • #20278: BUG: 修复类型存根中 dtype 的阴影引用

  • #20293: BUG: 修复 universal2 构建的头文件

  • #20294: BUG: VOID_nonzero 有时可能会改变对齐标志

  • #20295: BUG: 不要在非对齐数组上使用非零快速路径

  • #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)

  • #20297: BUG, SIMD: 修复 64 位/8 位整数除以标量的问题

  • #20298: BUG, SIMD: 解决在 MSVC 上广播 SIMD 64 位整数的问题…

  • #20300: REL: 为 NumPy 1.21.4 版本做准备。

  • #20302: TST: 修复Arrayterator类型测试失败

NumPy 1.21.3 版本说明

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

NumPy 1.21.3 是一个维护版本,修复了 1.21.2 之后发现的一些错误。它还提供了 64 位 Python 3.10.0 版程序包。请注意 Python 3.10 的一些怪异之处:

  • Windows、Mac 或 Linux 上没有 32 位的程序包。

  • Mac Intel 构建仅适用于通用 2 程序包。

此版本支持的 Python 版本为 3.7-3.10。如果要使用 gcc-11 编译自己的版本,则需要使用 gcc-11.2+ 以避免出现问题。

贡献者

共有 7 个人为此版本做出了贡献。名字后有“+”的人第一次为此版本提交了补丁。

  • Aaron Meurer

  • Bas van Beek

  • Charles Harris

  • 开发者生态工程 +

  • Kevin Sheppard

  • Sebastian Berg

  • Warren Weckesser

已合并的拉取请求

总共合并了 8 个拉取请求。

  • #19745: 增强:向 3 个 generic/ndarray 方法添加 dtype 支持

  • #19955: 修复:解决 Apple silicon 上的除零错误 + 测试失败...

  • #19958: 维护:将仅进行类型检查的 ufunc 子类标记为 ufunc 别名...

  • #19994: 修复:np.tan(np.inf) 测试失败

  • #20080: 修复:在模拟 int128 的 PCG 中修正了不正确的进位

  • #20081: 修复:修复 PyArray_CompareFunc 中日期时间的 NaT 处理...

  • #20082: 文档:确保我们也将文档添加到字典中...

  • #20106: 修复:核心:result_type(0, np.timedelta64(4)) 会导致段错误。

贡献者

共有 7 个人为此版本做出了贡献。名字后有“+”的人第一次为此版本提交了补丁。

  • Aaron Meurer

  • Bas van Beek

  • Charles Harris

  • 开发者生态工程 +

  • Kevin Sheppard

  • Sebastian Berg

  • Warren Weckesser

已合并的拉取请求

总共合并了 8 个拉取请求。

  • #19745: 增强:向 3 个 generic/ndarray 方法添加 dtype 支持

  • #19955: 修复:解决 Apple silicon 上的除零错误 + 测试失败...

  • #19958: 维护:将仅进行类型检查的 ufunc 子类标记为 ufunc 别名...

  • #19994: 修复:np.tan(np.inf) 测试失败

  • #20080: 修复:在模拟 int128 的 PCG 中修正了不正确的进位

  • #20081: 修复:修复 PyArray_CompareFunc 中日期时间的 NaT 处理...

  • #20082: 文档:确保我们也将文档添加到字典中...

  • #20106: 错误:核心:result_type(0, np.timedelta64(4))将导致段错误。

NumPy 1.21.2 版本说明

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

NumPy 1.21.2 是一个维护版本,修复了 1.21.1 发布后发现的错误。它还为下游测试提供了 64 位 manylinux Python 3.10.0rc1 的安装包。需要注意的是,Python 3.10 尚未正式发布。此外,它还对 ARM64 架构的 Windows 提供了初步支持,但该平台上没有 OpenBLAS 支持,也没有相应的安装包。

此版本支持的 Python 版本为 3.7-3.9。1.21.x 系列与 Python 3.10.0rc1 兼容,正式发布后将正式支持 Python 3.10。之前在 gcc-11.1 上的问题已经通过 gcc-11.2 进行了修复,请检查您使用的 gcc 版本。

贡献者

总共有 10 个人对此版本做出了贡献。名字后面带“+”的人是首次贡献补丁。

  • Bas van Beek

  • Carl Johnsen +

  • Charles Harris

  • Gwyn Ciesla +

  • Matthieu Dartiailh

  • Matti Picus

  • Niyas Sait +

  • Ralf Gommers

  • Sayed Adel

  • Sebastian Berg

合并的拉取请求

总共有 18 个拉取请求合并到了此版本中。

  • #19497:MAINT:将 1.21.x 的 Python 版本设置为<3.11

  • #19533:BUG:修复导入numpy.typing可能引发的问题

  • #19646:MAINT:升级 Python 3.10 的 Cython 版本。

  • #19648:TST:将 Python 3.10 的测试版本从 beta4 提升到 rc1

  • #19651:TST:在 runtests.py 中避免使用 distutils.sysconfig

  • #19652:MAINT:向 nditer 类型提示添加了缺失的双下方法

  • #19656:BLD,SIMD:修复当-Werror不适用时测试额外检查的问题…

  • #19657:BUG:删除布尔输出的逻辑对象 ufunc

  • #19658:MAINT:将.coveragerc 文件包含在源代码分发包中,以支持…

  • #19659:BUG:修复掩码迭代器输出复制路径中的错误写入

  • #19660:ENH:为 ARM 架构的 Windows 添加支持

  • #19661:BUG:为 platlib 的模板化参数添加基础

  • #19662���BUG,DEP:非默认的 UFunc 签名/ dtype 用法应该被弃用

  • #19666:MAINT:添加对 Python 3.10 的支持。

  • #19668:TST,BUG:运行runtest.py时消除路径分隔符

  • #19671:BLD:检查 libflame 时加载额外的标志

  • #19676:BLD:更新 circleCI 的 Docker 镜像

  • #19677: REL: 为 1.21.2 版本做准备。

贡献者

本次发布共有 10 位贡献者。名字后带 “+” 的人是首次为补丁做出贡献。

  • Bas van Beek

  • Carl Johnsen +

  • Charles Harris

  • Gwyn Ciesla +

  • Matthieu Dartiailh

  • Matti Picus

  • Niyas Sait +

  • Ralf Gommers

  • Sayed Adel

  • Sebastian Berg

已合并的拉取请求

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

  • #19497: MAINT: 将 Python 版本设置为 1.21.x 的 <3.11

  • #19533: BUG: 修复导入 numpy.typing 可能引发的问题

  • #19646: MAINT: 更新 Cython 版本以支持 Python 3.10。

  • #19648: TST: 将 Python 3.10 测试版本从 beta4 升级到 rc1

  • #19651: TST: 避免在 runtests.py 中使用 distutils.sysconfig

  • #19652: MAINT: 为 nditer 类型暗示添加丢失的双下划线方法

  • #19656: BLD, SIMD: 修复在 -Werror 不适用时测试额外检查的问题...

  • #19657: BUG: 移除布尔输出的逻辑对象 ufuncs

  • #19658: MAINT: 将 .coveragerc 包含在源分发中以支持...

  • #19659: BUG: 修复掩码迭代器输出复制路径中的错误写入

  • #19660: ENH: 为 Windows arm 目标添加支持

  • #19661: BUG: 为 platlib 添加基础模板参数

  • #19662: BUG,DEP: 非默认的 UFunc 签名/dtype 使用应该被弃用

  • #19666: MAINT: 添加对 Python 3.10 的支持。

  • #19668: TST,BUG: 运行 runtest.py 时消毒路径分隔符

  • #19671: BLD: 在检查 libflame 时加载额外标志

  • #19676: BLD: 更新 circleCI docker 镜像

  • #19677: REL: 为 1.21.2 版本做准备。

NumPy 1.21.1 发布说明

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

NumPy 1.21.1 是一个维护版本,用于修复在 1.21.0 版本发布后发现的问题,并更新 OpenBLAS 至 v0.3.17 以解决 arm64 上的问题。

此版本支持的 Python 版本为 3.7-3.9。1.21.x 系列兼容开发版 Python 3.10。 Python 3.10 将在发布后得到官方支持。

警告

有未解决的问题,使用 gcc-11.1 编译 NumPy 1.20.0。

  • 优化级别-O3在运行测试时会导致许多不正确的警告。

  • 在一些硬件上,NumPY 会陷入无限循环。

贡献者

共有 11 人贡献了此版本。名字旁边带有“+”符号的人是第一次贡献补丁。

  • Bas van Beek

  • Charles Harris

  • Ganesh Kathiresan

  • Gregory R. Lee

  • Hugo Defois +

  • Kevin Sheppard

  • Matti Picus

  • Ralf Gommers

  • Sayed Adel

  • Sebastian Berg

  • Thomas J. Fan

合并的拉取请求

共合并了 26 个拉取请求以进行此发布。

  • #19311: REV,BUG: 用typing.Any替换NotImplemented

  • #19324: MAINT:修复ndarray.realimag的返回 dtype

  • #19330: MAINT:在定义中用dtype替换"dtype[Any]"

  • #19342: DOC:修复一些生成 pdf 文件时崩溃的文档字符串。

  • #19343: MAINT:提升 scipy-mathjax

  • #19347: BUG:修复大数组和大端机器的 arr.flat.index

  • #19348: ENH: 添加numpy.f2py.get_include函数

  • #19349: BUG: 修复 ufunc dtype 处理中的引用计数泄漏

  • #19350: MAINT:注释np.number子类的缺失属性

  • #19351: BUG: 修复零大小 void 的强制转换安全性和比较

  • #19352: BUG: 修正 random 中的 Cython 声明

  • #19353: BUG:防止访问空子数组的 base 属性

  • #19365: BUG,SIMD:修复在 Darwin 上检测 AVX512 功能

  • #19366: MAINT:在 distutils 模板处理中删除print()语句

  • #19390: ENH:在 show_config 中添加 SIMD 体系结构

  • #19391: BUG: 不对所有 nans 引发弃用警告…

  • #19392: BUG: 修复对象到任意类型的强制转换代码中的 NULL 特殊情况

  • #19430: MAINT:在 travis 上使用 arm64-graviton2 进行测试

  • #19495: 构建:更新 OpenBLAS 到 v0.3.17.

  • #19496: 维护:避免在除法 SIMD 代码注释中使用 Unicode 字符。

  • #19499: 错误,SIMD:修复 GCC-11 上非零计数的无限循环。

  • #19500: 错误:修复npiter_multi_index_set中的 numpy.npiter 泄露。

  • #19501: 测试:修复 python 3.9.0 中GenericAlias测试失败。

  • #19502: 维护:开始使用 Python 3.10.0b3 进行测试。

  • #19503: 维护:为基于对象和 ctypes 的缺失 dtype 重载添加。

  • #19510: 发布:准备 NumPy 1.21.1 版本发布。

贡献者

共有 11 人为本次发布做出了贡献。名字前带“+”符号的人第一次贡献了补丁。

  • Bas van Beek

  • Charles Harris

  • Ganesh Kathiresan

  • Gregory R. Lee

  • Hugo Defois +

  • Kevin Sheppard

  • Matti Picus

  • Ralf Gommers

  • Sayed Adel

  • Sebastian Berg

  • Thomas J. Fan

合并的拉取请求

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

  • #19311: 修订,错误:用typing.Any替换NotImplemented

  • #19324: 维护:修复ndarray.realimag的返回 dtype。

  • #19330: 维护:在dtype[Any]的定义中用dtype替换"dtype[Any]"

  • #19342: 文档:修复一些会导致 pdf 生成崩溃的文档字符串。

  • #19343: 维护:升级 scipy-mathjax。

  • #19347: 错误:修复大数组和大端机器上arr.flat.index的问题。

  • #19348: 增强:添加numpy.f2py.get_include函数。

  • #19349: 错误:修复 ufunc dtype 处理中的引用计数泄漏。

  • #19350: 维护:注释np.number子类的缺失属性。

  • #19351: 错误:为零大小的 voids 修复强制转换安全性和比较。

  • #19352: 错误:在 random 中更正 Cython 声明。

  • #19353: 错误:防止访问 NULL 子数组的基本属性。

  • #19365: 错误,SIMD:修复在 Darwin 上检测 AVX512 特性的问题。

  • #19366: 维护:移除模板处理中的print()

  • #19390: 增强:在 show_config 中显示 SIMD 架构。

  • #19391: 错误:不要对唯一的所有 nans 引发停用警告。

  • #19392: BUG:修复了对象到任何类型转换代码中的 NULL 特殊情况

  • #19430: MAINT:在 travis 上使用 arm64-graviton2 进行测试

  • #19495: BUILD:将 OpenBLAS 更新至 v0.3.17

  • #19496: MAINT:避免在 SIMD 代码注释中使用 Unicode 字符

  • #19499: BUG, SIMD:修复了 GCC-11 上对非零计数时的无限循环问题

  • #19500: BUG:修复了 numpy.npiter 在 npyiter_multi_index_set 中的内存泄漏问题

  • #19501: TST:修复了 Python 3.9.0 的 GenericAlias 测试失败问题

  • #19502: MAINT:开始使用 Python 3.10.0b3 进行测试。

  • #19503: MAINT:为基于对象和 ctypes 的遗漏 dtype 进行补充...

  • #19510: REL:为 NumPy 1.21.1 版本做好准备。

posted @ 2024-06-24 14:54  绝不原创的飞龙  阅读(9)  评论(0编辑  收藏  举报