On Sat, Mar 7, 2015 at 2:02 PM, Dinesh Vadhia <dineshbvad...@hotmail.com> wrote:
> This was originally posted on SO ( > https://stackoverflow.com/questions/28853740/numpy-array-casting-ruled-not-safe) > and it was suggested it is probably a bug in numpy.take. > > Python 2.7.8 |Anaconda 2.1.0 (32-bit)| (default, Jul 2 2014, 15:13:35) > [MSC v.1500 32 bit (Intel)] on win32 > Type "copyright", "credits" or "license()" for more information. > > >>> import numpy > >>> numpy.__version__ > '1.9.2' > > >>> a = numpy.array([9, 7, 5, 4, 3, 1], dtype=numpy.uint32) > >>> b = numpy.array([1, 3], dtype=numpy.uint32) > >>> c = a.take(b) > > Traceback (most recent call last): > File "<pyshell#5>", line 1, in <module> > c = a.take(b) > TypeError: Cannot cast array data from dtype('uint32') to dtype('int32') > according to the rule 'safe' > This actually looks correct for 32-bit windows. Numpy indexes with a signed type big enough to hold a pointer to void, which in this case is an int32, and the uint32 cannot be safely cast to that type. Chuck
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion