NumPy 1.16.4 发布说明#

NumPy 1.16.4 版本修复了针对 1.16.3 版本报告的错误,并且还从主分支回移了几项增强功能,这些增强功能似乎适合作为最后一个支持 Python 2.7 的发布系列.PyPI 上的轮子与 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获得.

兼容性说明#

对随机流的潜在更改#

由于对随机浮点数应用对数时存在错误,当从 np.random.betanp.random.binomialnp.random.laplacenp.random.logisticnp.random.logseriesnp.random.multinomial 采样时,如果底层 MT19937 随机流中生成了 0,流可能会发生变化.这种情况发生的概率为 1 分之 \(10^{53}\),因此对于任何给定的种子,流发生变化的概率极小.如果在底层生成器中遇到 0,则现在会丢弃生成的错误值(np.infnp.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个人为这次发布做出了贡献.名字后面带有”+”的人是第一次贡献补丁.

  • 查尔斯·哈里斯

  • Eric Wieser

  • 丹尼斯·佐洛 +

  • Hunter Damron +

  • 李京蓓 +

  • Kevin Sheppard

  • Matti Picus

  • 尼古拉·索兰佐 +

  • 塞巴斯蒂安·伯格

  • 泰勒·雷迪

合并的拉取请求#

本次发布总共合并了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: 在打印相对误差、绝对误差时特殊处理对象数组