NumPy 1.6.0 发行说明#
本次发行包含若干新功能,以及大量的错误修复和文档改进。它与 1.5.0 发行版向后兼容,并支持 Python 2.4 - 2.7 和 3.1 - 3.2。
亮点#
重新引入 datetime dtype 支持,以处理数组中的日期。
一种新的 16 位浮点类型。
一种新的迭代器,提高了许多函数的性能。
新功能#
新的 16 位浮点类型#
本次发行增加了对 IEEE 754-2008 binary16 格式的支持,可通过数据类型 numpy.half 访问。在 Python 中,此类型与 float 或 double 的行为相似,C 扩展可以通过暴露的 half-float API 添加对其的支持。
新迭代器#
添加了一个新的迭代器,用单个对象和 API 取代了现有迭代器和多迭代器的功能。此迭代器能很好地处理与 C 或 Fortran 连续性不同的通用内存布局,并同时处理标准 NumPy 和自定义广播。ufuncs 提供的缓冲、自动数据类型转换和可选输出参数(在其他地方难以复制)现在可以通过此迭代器公开。
numpy.polynomial 中的 Legendre, Laguerre, Hermite, HermiteE 多项式#
扩展了多项式包中可用的多项式数量。此外,已为类添加了新的 window 属性,用于指定 domain 映射到的范围。这对于自然域为无穷大的 Laguerre, Hermite 和 HermiteE 多项式尤其有用,并提供了一种更直观的方法来获取正确的值映射,而无需进行不自然的 domain 操作。
numpy.f2py 中的 Fortran 假定形状数组和 size 函数支持#
F2py 现在支持封装使用假定形状数组的 Fortran 90 例程。以前,这些例程可以从 Python 调用,但相应的 Fortran 例程接收到的假定形状数组是零长度数组,这会导致不可预测的结果。感谢 Lorenz Hüdepohl 指出接口假定形状数组例程的正确方法。
此外,f2py 现在支持对在维度规范中使用两个参数 size 函数的 Fortran 例程进行自动封装。
其他新函数#
numpy.ravel_multi_index:将多索引元组转换为扁平索引数组,并对索引应用边界模式。
numpy.einsum:评估爱因斯坦求和约定。使用爱因斯坦求和约定,许多常见的 N 维数组运算可以用简单的方式表示。此函数提供了一种计算此类求和的方法。
numpy.count_nonzero:计算数组中非零元素的数量。
numpy.result_type 和 numpy.min_scalar_type:这些函数公开了 ufuncs 和其他运算用于确定输出类型的底层类型提升机制。它们改进了 numpy.common_type 和 numpy.mintypecode,后者提供了类似的功能,但与 ufunc 实现不匹配。
更改#
默认 错误 处理#
除 underflow(保持 ignore)外,所有默认错误处理已从 print 更改为 warn。
numpy.distutils#
支持了几个新的编译器来构建 Numpy:OS X 上的 Portland Group Fortran 编译器,Linux 上的 PathScale 编译器套件和 64 位 Intel C 编译器。
numpy.testing#
测试框架增加了 numpy.testing.assert_allclose,它比 assert_almost_equal、assert_approx_equal 和 assert_array_almost_equal 提供了更方便的方式来比较浮点数组。
C API#
除了新迭代器和 half 数据类型 API 外,C API 还增加了许多其他功能。ufuncs 使用的类型提升机制通过 PyArray_PromoteTypes、PyArray_ResultType 和 PyArray_MinScalarType 公开。添加了一个新的枚举 NPY_CASTING,用于控制允许的转换类型。它被用于新函数 PyArray_CanCastArrayTo 和 PyArray_CanCastTypeTo。通过 PyArray_GetArrayParamsFromObject 公开了一种更灵活的方式来处理将任意 Python 对象转换为数组。
已弃用的功能#
numpy.histogram 中的“normed”关键字已被弃用。其功能将被新的“density”关键字取代。
已移除的功能#
numpy.fft#
函数 refft、refft2、refftn、irefft、irefft2、irefftn(它们是名称中不带 'e' 的同名函数的别名)已被移除。
numpy.memmap#
memmap 的 sync() 和 close() 方法已被移除。请改用 flush() 和“del memmap”。
numpy.lib#
已弃用的函数 numpy.unique1d、numpy.setmember1d、numpy.intersect1d_nu 和 numpy.lib.ufunclike.log2 已被移除。
numpy.ma#
从 numpy.ma 模块中移除了几个已弃用的项。
* ``numpy.ma.MaskedArray`` "raw_data" method
* ``numpy.ma.MaskedArray`` constructor "flag" keyword
* ``numpy.ma.make_mask`` "flag" keyword
* ``numpy.ma.allclose`` "fill_value" keyword
numpy.distutils#
已移除 numpy.get_numpy_include 函数,请改用 numpy.get_include。