numpy.vander#
- numpy.vander(x, N=None, increasing=False)[源代码]#
生成一个范德蒙矩阵.
输出矩阵的列是输入向量的幂.幂的顺序由 increasing 布尔参数决定.具体来说,当 increasing 为 False 时,第 i 个输出列是输入向量按元素提升到
N - i - 1
的幂.这种每一行都有几何级数的矩阵以 Alexandre- Theophile Vandermonde 的名字命名.- 参数:
- xarray_like
一维输入数组.
- Nint, 可选
输出中的列数.如果未指定 N,则返回一个方形数组(
N = len(x)
).- increasingbool, 可选
列的幂的顺序.如果为 True,幂从左到右增加;如果为 False(默认),则它们是反向的.
在 1.9.0 版本加入.
- 返回:
- outndarray
Vandermonde 矩阵.如果 increasing 为 False,第一列是
x^(N-1)
,第二列是x^(N-2)
,依此类推.如果 increasing 为 True,列是x^0, x^1, ..., x^(N-1)
.
示例
>>> import numpy as np >>> 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]])
一个方形Vandermonde矩阵的行列式是输入向量值之间差异的乘积:
>>> np.linalg.det(np.vander(x)) 48.000000000000043 # may vary >>> (5-3)*(5-2)*(5-1)*(3-2)*(3-1)*(2-1) 48