numpy.repeat TypeError: array cannot be safely cast to required type

Tim Hochberg tim.hochberg at ieee.org
Fri Nov 3 13:43:25 CST 2006


George Sakkis wrote:
> Can anyone explain this ?
>
>   
>>>> import numpy as N
>>>> x = N.arange(1,6,dtype='B')
>>>> x
>>>>         
> array([1, 2, 3, 4, 5], dtype=uint8)
>   
>>>> N.repeat(x, N.ones(5,'H'))
>>>>         
> array([1, 2, 3, 4, 5], dtype=uint8)
>   
>>>> N.repeat(x, N.ones(5,'l'))
>>>>         
> array([1, 2, 3, 4, 5], dtype=uint8)
>   
>>>> N.repeat(x, N.ones(5,'L'))
>>>>         
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File
> "/usr/local/lib/python2.4/site-packages/numpy/core/fromnumeric.py",
> line 83, in repeat
>     return repeat(repeats, axis)
> TypeError: array cannot be safely cast to required type
>   
It means you can't safely a value of type uint32 ('L') to a value of 
type int32 ('i').  The second argument of repeat needs to be castable to 
type int32.

A style note: please use the named dtypes (int32, uint32, etc) rather 
than the old-style letter codes; the former is much clearer. The answer 
to your question might  have been immediately apparent had you been 
using named dtypes.

 Personally, I'd also prefer people use the "ones([n])" syntax instead 
of the I-wish-it-were-deprecated-but-it's-too-much-to-hope-for "ones(n)" 
syntax.  T

-tim


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642




More information about the Numpy-discussion mailing list