NumPy 1.16.4 发布说明#
NumPy 1.16.4 版本修复了针对 1.16.3 版本报告的错误,并从主分支回溯了多项增强功能,这些功能似乎适用于作为最后一个支持 Python 2.7 的发布系列。PyPI 上的 wheel 包与 OpenBLAS v0.3.7-dev 链接,这应该能解决 Skylake 系列 CPU 上的问题。
构建此版本的下游开发者应使用 Cython >= 0.29.2,如果使用 OpenBLAS,则应使用 OpenBLAS > v0.3.7。支持的 Python 版本是 2.7 和 3.5-3.7。
新弃用#
C-API 包装数组的可写标志#
当通过 C-API 创建数组以包装数据指针时,我们唯一能判断数据读写性质的指标就是创建时设置的 writeable
标志。强制将此标志设为可写是危险的。将来将无法从 Python 将可写标志切换为 True
。由于以这种方式创建的数组在实践中非常罕见,并且仅通过 NumPy C-API 提供,因此此弃用不应影响太多用户。
兼容性说明#
随机流的潜在变化#
由于对随机浮点数应用对数时存在错误,如果基础 MT19937 随机流中生成了 0,那么从 np.random.beta
、np.random.binomial
、np.random.laplace
、np.random.logistic
、np.random.logseries
或 np.random.multinomial
采样时,流可能会发生变化。发生这种情况的概率为 \(10^{53}\) 分之一,因此对于任何给定的种子,流发生变化的概率极小。如果基础生成器中遇到 0,则现在会丢弃产生的错误值(np.inf
或 np.nan
)。
变更#
numpy.lib.recfunctions.structured_to_unstructured
不再压缩单字段视图#
以前,structured_to_unstructured(arr[['a']])
会产生一个与 structured_to_unstructured(arr[['a', b']])
不一致的压缩结果。这是意外。旧的行为可以通过 structured_to_unstructured(arr[['a']]).squeeze(axis=-1)
或更简单地通过 arr['a']
来保留。
贡献者#
共有 10 人为本次发布做出了贡献。名字旁有“+”的人是首次贡献补丁。
Charles Harris
Eric Wieser
Dennis Zollo +
Hunter Damron +
Jingbei Li +
Kevin Sheppard
Matti Picus
Nicola Soranzo +
Sebastian Berg
Tyler Reddy
合并的拉取请求#
本次发布共合并了 16 个拉取请求。
#13392: BUG: 某些 PyPy 版本缺少 PyStructSequence_InitType2。
#13394: MAINT, DEP: 修复已弃用的
assertEquals()
#13396: BUG: 修复 structured_to_unstructured 在单字段类型上的问题(回溯)
#13549: BLD: 使用 pytest 4.5 再次使 CI 通过
#13552: TST: 在 conftest.py 中注册标记。
#13559: BUG: 移除 arraymultiter_new 中空 kwargs 导致的 ValueError
#13560: BUG: 在 crackfortran 中将 TypeError 添加到可接受的异常中。
#13561: BUG: 在 descr_to_dtype 中处理子数组
#13562: BUG: 保护生成器免受 log(0.0) 影响
#13563: BUG: 始终从 structured_to_unstructured 返回视图,当…
#13564: BUG: 检查编译器版本时捕获 stderr
#13565: BUG: longdouble(int) 不工作
#13587: BUG: distutils/system_info.py 修复缺少的 subprocess 导入 (#13523)
#13620: BUG,DEP: 修复没有基的数组的可写标志设置
#13641: MAINT: 为 1.16.4 版本做准备。
#13644: BUG: 打印相对误差和绝对误差时特殊处理对象数组