numpy.linalg.lstsq underdetermined case
I ran your code and got the below plot as well as an almost zero vector of:

[-1.19209290e-07, -2.42083020e-09, -8.94069672e-08,  2.23517418e-07, -6.33299351e-08]


This means numpy successfully curve-fit a line to your data. 



An order of 6 works a lot better, though:

[-2.79396772e-09 -2.04281037e-14 -1.27897692e-13  4.33431069e-12 -2.27373675e-11]




numpy won't give you an infinite number of solutions.  It will give you an optimally curve-fit solution to your data for the given polynomial order.