Misleading/erroneous TypeError message

a = array([0],dtype=uint64) a += array([1],dtype=int64) TypeError: Cannot cast ufunc add output from dtype('float64') to
Hi, I just upgraded my numpy and started to received a TypeError from one of my codes that relied on the old, less strict, casting behaviour. The error message, however, left me scratching my head when trying to debug something like this: dtype('uint64') with casting rule 'same_kind' Where does the 'float64' come from?!?! Peter PS Thanks for all the great work guys, numpy is a fantastic tool and has been a lot of help to me over the years!

On Tue, Nov 24, 2015 at 12:42 PM, Peter Creasey < p.e.creasey.00@googlemail.com> wrote:
Hi,
I just upgraded my numpy and started to received a TypeError from one of my codes that relied on the old, less strict, casting behaviour. The error message, however, left me scratching my head when trying to debug something like this:
a = array([0],dtype=uint64) a += array([1],dtype=int64) TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('uint64') with casting rule 'same_kind'
Where does the 'float64' come from?!?!
The combination of uint64 and int64 leads to promotion to float64 as the best option for the combination of signed and unsigned. To fix things, you can either use `np.add` with an output argument and `casting='unsafe'` or just be careful about using unsigned types. Chuck
participants (2)
-
Charles R Harris
-
Peter Creasey