[Numpy-discussion] Type casting problems with numpy.take

Jaime Fernández del Río jaime.frio at gmail.com
Fri Feb 8 19:34:02 EST 2013


On Fri, Feb 8, 2013 at 3:54 PM, Daπid <davidmenhur at gmail.com> wrote:

> TypeError: Cannot cast array data from dtype('uint16') to
> dtype('uint8') according to the rule 'safe'.
>

That really makes it sound like the check is being done the other way
around!

But I'd be surprised if something so obvious hadn't been seen and reported
earlier, especially since I have tried it on a Linux box with older
versions, and things were the same in 1.2.1. So that means this would be a
5 year old bug.

>>> np.__version__
'1.2.1'
>>> lut = np.random.randint(256, size=(65536,)).astype('uint8')
>>> arr = np.random.randint(65536, size=(1000, 1000)).astype('uint16')
>>> np.take(lut, arr)
array([[ 56, 131, 248, ..., 233,  34, 191],
       [229, 217, 233, ..., 183,   8,  86],
       [249, 238,  79, ...,  38,  17,  72],
       ...,
       [ 19,  95, 199, ..., 236, 148,  39],
       [178, 129, 208, ...,  76,  46, 125],
       [ 66, 196,  71, ..., 227, 252,  94]], dtype=uint8)
>>> np.take(lut, arr, out=arr)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/dist-packages/numpy/core/fromnumeric.py", line
97, in take
    return take(indices, axis, out, mode)
TypeError: array cannot be safely cast to required type
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130208/1ea55487/attachment.html>


More information about the NumPy-Discussion mailing list