On 2016/04/04 9:23 AM, T J wrote:
I'm on NumPy 1.10.4 (mkl).
>>> np.uint(3) // 2 # 1.0
>>> 3 // 2 # 1
Is this behavior expected? It's certainly not desired from my
perspective. If this is not a bug, could someone explain the rationale
to me.
Thanks.
I agree that it's almost always undesirable; one would reasonably expect
some sort of int. Here's what I think is going on:
The odd behavior occurs only with np.uint, which is np.uint64, and when
the denominator is a signed int. The problem is that if the denominator
is negative, the result will be negative, so it can't have the same type
as the first numerator. Furthermore, if the denominator is -1, the
result will be minus the numerator, and that can't be represented by
np.uint or np.int. Therefore the result is returned as np.float64. The
promotion rules are based on what *could* happen in an operation, not on
what *is* happening in a given instance.
Eric
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion