开发手册 欢迎您!
软件开发者资料库

Python numpy.vander函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中vander方法的使用。

numpy.vander

numpy.vander(x, N=None, increasing=False)     [source]

生成范德蒙矩阵。

输出矩阵的列是输入向量的幂。 幂的顺序由递增的布尔参数确定。 具体来说,当增加为False时,第i个输出列是逐元素提高到N-i-1的幂的输入向量。 每行中具有几何级数的矩阵以Alexandre-Theophile Vandermonde的名字命名。

参数 :

x :array_like

一维输入数组。

Nint, 可选

输出中的列数。 如果未指定N,

则返回一个正方形数组(N = len(x))。

increasingbool, 可选

列的幂顺序。 如果为True,则幂从左到右增加,

如果为False(默认值),则它们的功率相反。

 1.9.0版中的新功能。

返回值 :

outndarray

范德蒙矩阵。 如果递增为False,则第一列为x ^(N-1)

第二列为x ^(N-2),依此类推。 如果递增为True,

则列为x ^ 0,x ^ 1,...,x ^(N-1)

例子

>>> x = np.array([1, 2, 3, 5])>>> N = 3>>> np.vander(x, N)array([[ 1,  1,  1],       [ 4,  2,  1],       [ 9,  3,  1],       [25,  5,  1]])
>>> np.column_stack([x**(N-1-i) for i in range(N)])array([[ 1,  1,  1],       [ 4,  2,  1],       [ 9,  3,  1],       [25,  5,  1]])
>>> x = np.array([1, 2, 3, 5])>>> np.vander(x)array([[  1,   1,   1,   1],       [  8,   4,   2,   1],       [ 27,   9,   3,   1],       [125,  25,   5,   1]])>>> np.vander(x, increasing=True)array([[  1,   1,   1,   1],       [  1,   2,   4,   8],       [  1,   3,   9,  27],       [  1,   5,  25, 125]])

平方范德蒙矩阵的行列式是输入向量的值之间的差的乘积

>>> np.linalg.det(np.vander(x))48.000000000000043 # may vary>>> (5-3)*(5-2)*(5-1)*(3-2)*(3-1)*(2-1)48