np.polynomial.polynomial.polyval
用法:
polynomial.polynomial.polyval(x, c, tensor=True)
在点 x 处计算多项式。
如果 c 的长度为 n + 1,则此函数返回值
仅当参数 x 是元组或列表时,才会将其转换为数组,否则将其视为标量。在任何一种情况下,x 或其元素都必须支持与自身以及与 c 的元素的乘法和加法。
如果 c 是一维数组,则 p(x) 将具有与 x 相同的形状。如果 c 是多维的,那么结果的形状取决于张量的值。如果张量为真,则形状将为 c.shape[1:] + x.shape 如果张量为假,则形状将为 c.shape[1:]。请注意,标量具有形状 (,)。
系数中的尾随零将用于评估,因此如果考虑效率,则应避免使用它们。
参数:
- x: 数组,兼容对象
-
如果 x 是列表或元组,则将其转换为 ndarray,否则保持不变并视为标量。在任何一种情况下,x 或其元素都必须支持与自身以及与 c 的元素的加法和乘法。
- c: array_like
-
排序的系数数组,以便 n 次项的系数包含在 c[n] 中。如果 c 是多维的,则其余索引枚举多个多项式。在二维情况下,可以认为系数存储在 c 的列中。
- tensor: 布尔值,可选
-
如果为 True,则系数数组的形状在右侧扩展为一个,x 的每个维度一个。此操作的标量维度为 0。结果是 c 中的每一列系数都针对 x 的每个元素进行评估。如果为 False,则 x 在 c 的列上广播以进行评估。当 c 是多维的时,此关键字很有用。默认值是true。
返回:
- values: ndarray,兼容对象
-
返回数组的形状如上所述。
注意:
评估使用霍纳的方法。
例子:
>>> from numpy.polynomial.polynomial import polyval >>> polyval(1, [1,2,3]) 6.0
np.polynomial.polynomial.polyval(2, (1,2,3))
17.0
# 相当于是:1*20+2*21+*22=17
>>> a = np.arange(4).reshape(2,2) >>> a array([[0, 1], [2, 3]]) >>> polyval(a, [1,2,3]) array([[ 1., 6.], [17., 34.]]) >>> coef = np.arange(4).reshape(2,2) # multidimensional coefficients >>> coef array([[0, 1], [2, 3]]) >>> polyval([1,2], coef, tensor=True) array([[2., 4.], [4., 7.]]) >>> polyval([1,2], coef, tensor=False) array([2., 7.])