NumPy 1.8.1 Release Notes#

这是一个仅包含错误修复的 1.8.x 系列版本。

已修复的问题#

  • gh-4276: 修复 object 数组的 mean, var, std 方法

  • gh-4262: 移除不安全的 mktemp 使用

  • gh-2385: absolute(complex(inf)) 在 python3 中引发无效警告

  • gh-4024: 序列赋值在形状不匹配时不会引发异常

  • gh-4027: 修复读取长度超过 BUFFERSIZE 的字符串时可能发生的分块读取问题

  • gh-4109: 修复 0-d 数组索引返回 object 标量类型的问题

  • gh-4018: 修复 ufuncs 中缺少内存分配失败检查的问题

  • gh-4156: 高阶 linalg.norm 会丢弃复数数组的虚部

  • gh-4144: linalg: norm 在 longdouble 和 signed int 上失败

  • gh-4094: 修复 _strided_to_strided_string_to_datetime 中的 NaT 处理

  • gh-4051: 修复 _strided_to_strided_string_to_datetime 中的未初始化使用

  • gh-4093: Python 2.6.6 下加载压缩的 .npz 文件失败

  • gh-4138: python 3.4 中非本地字节序的 memoryview 导致段错误

  • gh-4123: 修复 lexsort 中缺失的 NULL 检查

  • gh-4170: 修复 memoryviews 中仅支持本地字节序的 long long 检查

  • gh-4187: 修复 32 位系统上的大文件支持

  • gh-4152: fromfile: 在 python3 中确保文件句柄位置同步

  • gh-4176: clang 兼容性:conversion_utils 中的拼写错误

  • gh-4223: 获取非整数项导致返回数组

  • gh-4197: 修复 memoryview 失败情况下的轻微内存泄漏

  • gh-4206: 修复使用单线程 python 构建的问题

  • gh-4220: 在 ufunc.at 的 docstring 中添加 versionadded:: 1.8.0

  • gh-4267: 改进内存分配失败的处理

  • gh-4267: 修复 ufunc.at 中在没有 GIL 的情况下使用 capi 的问题

  • gh-4261: 检测 GNU 编译器的供应商版本

  • gh-4253: IRR 返回 nan 而不是有效的负数答案

  • gh-4254: 修复字节数组不必要的字节序标志更改

  • gh-3263: numpy.random.shuffle 会覆盖 MaskedArray 的掩码

  • gh-4270: np.random.shuffle 对 flexible dtypes 不起作用

  • gh-3173: random.multinomial 的 ‘size’ 参数导致段错误

  • gh-2799: 允许 unique 函数处理复数列表

  • gh-3504: 修复 linspace 对整数数组标量的截断

  • gh-4191: get_info(‘openblas’) 未读取 libraries 键

  • gh-3348: _descriptor_from_pep3118_format 中发生访问冲突

  • gh-3175: 使用 bytearray 调用 numpy.array() 导致段错误

  • gh-4266: histogramdd - 非常接近最后一个边界的条目结果错误

  • gh-4408: 修复 stride_stricks.as_strided 函数对 object 数组的问题

  • gh-4225: 修复 windows 编译器构建中 log1p 和 exmp1 对 np.inf 的返回值

  • gh-4359: 修复 flex 数组 str.format 中的无限递归

  • gh-4145: 带有指数运算符的广播结果形状不正确

  • gh-4483: 修复 {dot,multiply,inner}(scalar, matrix_of_objs) 的交换律

  • gh-4466: 延迟 npyiter 大小检查,因为大小可能会改变

  • gh-4485: Buffered stride 被错误地标记为固定

  • gh-4354: byte_bounds 在 datetime dtypes 上失败

  • gh-4486: 从/转换为高精度 datetime64 对象时发生段错误/错误

  • gh-4428: einsum(None, None, None, None) 导致段错误

  • gh-4134: 针对大小为 1 的 object 约简时存在未初始化使用

更改#

NDIter#

当调用 NpyIter_RemoveAxis 时,迭代器范围将被重置。

当正在跟踪多索引且迭代器未缓冲时,可以调用 NpyIter_RemoveAxis。在这种情况下,迭代器的大小可能会减小。由于迭代器的总大小是有限的,所以在执行这些调用之前,迭代器可能过大。在这种情况下,其大小将被设置为 -1,并在移除多索引、设置迭代器范围或获取下一个函数时发出错误,而不是在构造时发出错误。

这对当前正常工作的代码没有影响,但强调了在可能发生这些情况时检查错误返回的必要性。在大多数情况下,正在迭代的数组与迭代器的大小相同,因此不会出现此类问题。

np.distutils 的可选降低详细程度#

设置 numpy.distutils.system_info.system_info.verbosity = 0,然后调用 numpy.distutils.system_info.get_info('blas_opt') 将不会在输出中打印任何内容。这主要面向使用 numpy.distutils 的其他包。

弃用#

C-API#

Python 3 对其文件对象应用的内部缓冲破坏了实用函数 npy_PyFile_Dup 和 npy_PyFile_DupClose。为了解决这个问题,在 npy_3kcompat.h 中声明了两个新函数 npy_PyFile_Dup2 和 npy_PyFile_DupClose2,并将旧函数标记为已弃用。由于这些函数的脆弱性,建议尽可能使用 Python API。