Computer can never give accurate results for floating point operation, and this behaviour is not restricted to python. The floating point precision is different from one computer to another.
You can find the precision for double floating points in numpy
print (np.finfo(np.double).precision)
or
print (np.finfo(float).precision)
If you wish you can change display precision of numpy by just typing.
np.set_printoptions(suppress=True)
or
print(np.array_str(y, suppress_small=True))
This will suppress results within the calculation precision limit.
check here for some clarification
https://docs.python.org/3.6/tutorial/floatingpoint.html
https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems
In numerical methods, rounding errors creates issues for operation involving millions of floating point calculation, Thus you find many such numerical methods involve setting an accuracy limit.