numpy.polyval(p, x)[source]

Evaluate a polynomial at specific values.


This forms part of the old polynomial API. Since version 1.4, the new polynomial API defined in numpy.polynomial is preferred. A summary of the differences can be found in the transition guide.

If p is of length N, this function returns the value:

p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]

If x is a sequence, then p(x) is returned for each element of x. If x is another polynomial then the composite polynomial p(x(t)) is returned.

parray_like or poly1d object

1D array of polynomial coefficients (including coefficients equal to zero) from highest degree to the constant term, or an instance of poly1d.

xarray_like or poly1d object

A number, an array of numbers, or an instance of poly1d, at which to evaluate p.

valuesndarray or poly1d

If x is a poly1d instance, the result is the composition of the two polynomials, i.e., x is “substituted” in p and the simplified result is returned. In addition, the type of x - array_like or poly1d - governs the type of the output: x array_like => values array_like, x a poly1d object => values is also.

See also


A polynomial class.


Horner’s scheme [1] is used to evaluate the polynomial. Even so, for polynomials of high degree the values may be inaccurate due to rounding errors. Use carefully.

If x is a subtype of ndarray the return value will be of the same type.



I. N. Bronshtein, K. A. Semendyayev, and K. A. Hirsch (Eng. trans. Ed.), Handbook of Mathematics, New York, Van Nostrand Reinhold Co., 1985, pg. 720.


>>> np.polyval([3,0,1], 5)  # 3 * 5**2 + 0 * 5**1 + 1
>>> np.polyval([3,0,1], np.poly1d(5))
>>> np.polyval(np.poly1d([3,0,1]), 5)
>>> np.polyval(np.poly1d([3,0,1]), np.poly1d(5))