numpy.float64.__round__ is incompatible with float.__round__ in python3
In Python 3, round(_float_) returns an integer, but round(_np.float64_) returns a float:
>>> np.float64(1).__round__()
1.0
>>> 1.0.__round__()
1
The result is that if a np.float64 seeps into my data, the stock round produces unexpected results: round(x) can be an integer or a float depending on whether x is a regular float or a np.float64.
>>> [type(round(t(1))).__name__ for t in [float, np.float16, np.float32, np.float64, np.float128]]
['int', 'float16', 'float32', 'float64', 'float128']
The distinction does matter, e.g., np.partition raises TypeError: Partition index must be integer.
PS. Python 3.7.0, numpy 1.14.5