<div dir="ltr"><div>I think restricting polynomials to time series is not a generic way and quite specific. <br></div><div><br></div><div>Apart from the series and certain filter design actual usage of polynomials are always presented with decreasing order (control and signal processing included because they use powers of s and inverse powers of z if needed). So if that is the use case then probably it should go under a namespace of `TimeSeries` or at least require an option to present it in reverse.  In my opinion polynomials are way more general than that domain and to everyone else it seems to me that "the intuitive way" is the decreasing powers.</div><div><br></div><div>For the design</div><div><br></div><div>
 > This isn't a great design, because they represent:<br><div>>    p(x) = c[0] * x^2 + c[1] * x^1 + c[2] * x^0</div>

<br></div><div>I don't see the problem actually. If I ask someone to write down the coefficients of a polynomial I don't think anyone would start from c[2].</div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 30, 2018 at 8:30 PM, Charles R Harris <span dir="ltr"><<a href="mailto:charlesr.harris@gmail.com" target="_blank">charlesr.harris@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sat, Jun 30, 2018 at 12:09 PM, Eric Wieser <span dir="ltr"><<a href="mailto:wieser.eric+numpy@gmail.com" target="_blank">wieser.eric+numpy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">> <span style="color:rgb(33,33,33);font-size:12.8px"> if a single program uses both np.polyval() and np.polynomail.Polynomial, it seems bound to cause unnecessary confusion.<br><br>Yes, I would recommend definitely not doing that!</span><div><span style="color:rgb(33,33,33);font-size:12.8px"><br></span></div><div><span style="color:rgb(33,33,33);font-size:12.8px">> </span><span style="color:rgb(33,33,33)">I still think it would make more sense for np.polyval() to use conventional indexing<br><br>Unfortunately, it's too late for "making sense" to factor into the design. `polyval` is being used in the wild, so we're stuck with it behaving the way it does. At best, we can deprecate it and start telling people to move from `np.polyval` over to `np.polynomial.</span><span style="color:rgb(33,33,33)">polynomial.</span><span style="color:rgb(33,33,33)">poly<wbr>val`. Perhaps we need to make this namespace less cumbersome in order for that to be a reasonable option.</span></div><div><span style="color:rgb(33,33,33)"><br></span></div><div><span style="color:rgb(33,33,33)">I also wonder if we want a more lightweight polynomial object without the extra domain and range information, which seem like they make `Polynomial` a more questionable drop-in replacement for `poly1d`.</span></div></div></blockquote><div><br></div></span><div>The defaults for domain and window make it like a regular polynomial. For fitting, it does adjust the range, but the usual form can be recovered with `p.convert()` and will usually have more accurate coefficients due to using a better conditioned matrix during the fit. </div><div><br></div><div><div><font face="monospace, monospace">In [1]: from numpy.polynomial import Polynomial as P</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In [2]: p = P([1, 2, 3], domain=(0,2))</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In [3]: p(0)</font></div><div><font face="monospace, monospace">Out[3]: 2.0</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In [4]: p.convert()</font></div><div><font face="monospace, monospace">Out[4]: Polynomial([ 2., -4.,  3.], domain=[-1.,  1.], window=[-1.,  1.])</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">In [5]: p.convert()(0)</font></div><div><font face="monospace, monospace">Out[5]: 2.0</font></div></div><div><br></div><div>Chuck</div><div><br></div></div></div></div>
<br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
<br></blockquote></div><br></div>