NumPy 1.5.0 发布说明#

亮点#

Python 3 兼容性#

这是第一个与 Python 3 兼容的 NumPy 版本.对 Python 3 和 Python 2 的支持是从单一的代码库完成的.有关更改的详细说明可以在 https://web.archive.org/web/20100814160313/http://projects.scipy.org/numpy/browser/trunk/doc/Py3K.txt 找到.

注意,Numpy 测试框架依赖于 nose,而 nose 尚未发布与 Python 3 兼容的版本.不过,可以在 https://web.archive.org/web/20100817112505/http://bitbucket.org/jpellerin/nose3/ 找到一个可用的 Python 3 分支.

SciPy 移植到 Python 3 的工作预计很快就会完成.

PEP 3118 兼容性#

PEP 3118 描述的新缓冲协议在 Numpy 的这个版本中得到了完全支持.在 Python 版本 >= 2.6 中,Numpy 数组暴露了缓冲接口,array()、asarray() 和其他函数接受新式缓冲区作为输入.

新功能#

警告:将复数转换为实数#

当一个复数被转换为实数时,Numpy 现在会发出一个 numpy.ComplexWarning.例如:

>>> x = np.array([1,2,3])
>>> x[:2] = np.array([1+2j, 1-2j])
ComplexWarning: Casting complex values to real discards the imaginary part

确实,cast 会丢弃虚部,这可能不是所有情况下都期望的行为,因此会有警告.这个警告可以通过标准方式关闭:

>>> import warnings
>>> warnings.simplefilter("ignore", np.ComplexWarning)

ndarrays 的点方法#

Ndarrays 现在也有点积作为方法,这允许将矩阵乘积链写为

>>> a.dot(b).dot(c)

而不是较长的替代方案

>>> np.dot(a, np.dot(b, c))

linalg.slogdet 函数#

slogdet 函数返回矩阵的符号和行列式的对数.因为行列式可能涉及许多小/大值的乘积,结果通常比简单乘法获得的结果更准确.

新标题#

新的头文件 ndarraytypes.h 包含了 ndarrayobject.h 中不依赖于 PY_ARRAY_UNIQUE_SYMBOL 和 NO_IMPORT/_ARRAY 宏的符号.大致上,这些符号是类型、类型定义和枚举;数组函数调用留在 ndarrayobject.h 中.这允许用户在不需关心宏展开及其副作用的情况下包含与数组相关的类型和枚举.

变化#

多项式.多项式#

  • polyint 和 polyder 函数现在检查指定的积分或导数次数是否为非负整数.数字 0 对这两个函数都是有效值.

  • Polynomial 类中添加了一个 degree 方法.

  • Polynomial 类中添加了一个 trimdeg 方法.它的操作类似于 truncate,但参数是所需结果的度数,而不是系数的数量.

  • Polynomial.fit 现在使用 None 作为拟合的默认域.可以通过使用 [] 作为域值来指定默认的 Polynomial 域.

  • 权重可以用于 polyfit 和 Polynomial.fit 中.

  • 已在 Polynomial 类中添加了 linspace 方法,以简化绘图.

  • 添加了polymulx函数.

polynomial.chebyshev#

  • chebint 和 chebder 函数现在检查指定的积分或导数次数是否为非负整数.数字 0 对这两个函数都是有效值.

  • Chebyshev 类中添加了一个 degree 方法.

  • Chebyshev 类中添加了一个 trimdeg 方法.它的操作类似于 truncate,但参数是所需结果的度数,而不是系数的数量.

  • Chebyshev.fit 现在使用 None 作为拟合的默认域.可以通过使用 [] 作为域值来指定默认的 Chebyshev 域.

  • 权重可以用于 chebfit 和 Chebyshev.fit 中.

  • 已经为 Chebyshev 类添加了 linspace 方法,以简化绘图.

  • chebmulx 函数已添加.

  • 增加了第一类和第二类切比雪夫点的函数.

直方图#

经过两年的过渡期后,直方图函数的旧行为已被逐步淘汰,并且”new”关键字已被移除.

correlate#

在1.4.0版本中,correlate的旧行为已被弃用,新行为(通常的互相关定义)现在是默认的.