NumPy 1.5.0 发布说明#

亮点#

Python 3 兼容性#

这是 NumPy 第一个兼容 Python 3 的版本。Python 3 和 Python 2 的支持来自同一个代码库。关于变更的详细说明可以在 https://web.archive.org/web/20100814160313/https://projects.scipy.org.cn/numpy/browser/trunk/doc/Py3K.txt 找到。

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

SciPy 迁移到 Python 3 的工作预计将很快完成。

PEP 3118 兼容性#

此版本的 NumPy 完全支持 PEP 3118 中描述的新缓冲区协议。在 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

转换确实会丢弃虚部,而这在所有情况下可能都不是预期的行为,因此会发出警告。可以通过标准方式关闭此警告:

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

ndarray 的 dot 方法#

ndarray 现在也拥有 dot product 作为一种方法,这允许写出如下的矩阵乘积链:

>>> 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 宏的符号。总的来说,这些符号是类型、typedef 和枚举;数组函数调用仍然保留在 ndarrayobject.h 中。这允许用户包含与数组相关的类型和枚举,而无需关心宏展开及其副作用。

更改#

polynomial.polynomial#

  • 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 函数。

  • 为第一类和第二类 Chebyshev 点添加了函数。

histogram#

经过两年的过渡期,histogram 函数的旧行为已被淘汰,并且移除了“new”关键字。

correlate#

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