OverflowError: long too big to convert

Can someone explain this? I can't seem to coerce numpy into storing large integer values. I'm sure that I'm just overlooking something simple...
import numpy a='1'*300 type(a)
<type 'str'>
b=int(a) type(b)
<type 'long'>
c=numpy.empty((2,2),long) c[:]=b
Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> c[:]=b OverflowError: long too big to convert
Thanks,
-Mark

Mark.Miller wrote:
Can someone explain this? I can't seem to coerce numpy into storing large integer values. I'm sure that I'm just overlooking something simple...
import numpy a='1'*300 type(a)
<type 'str'>
b=int(a) type(b)
<type 'long'>
c=numpy.empty((2,2),long) c[:]=b
Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> c[:]=b OverflowError: long too big to convert
Use object arrays explicitly:
c = numpy.empty((2, 2), dtype=object)
Using dtype=long gets interpreted as requesting the largest available integer type (or maybe just int64, I'm not sure). Those aren't unbounded.

OK...so just for future reference...does a Numpy 'long' not directly correspond to a Python 'long'?
Robert Kern wrote:
Mark.Miller wrote:
Can someone explain this? I can't seem to coerce numpy into storing large integer values. I'm sure that I'm just overlooking something simple...
import numpy a='1'*300 type(a)
<type 'str'>
b=int(a) type(b)
<type 'long'>
c=numpy.empty((2,2),long) c[:]=b
Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> c[:]=b OverflowError: long too big to convert
Use object arrays explicitly:
c = numpy.empty((2, 2), dtype=object)
Using dtype=long gets interpreted as requesting the largest available integer type (or maybe just int64, I'm not sure). Those aren't unbounded.

Mark.Miller wrote:
OK...so just for future reference...does a Numpy 'long' not directly correspond to a Python 'long'?
There is no Numpy "long", per se. There is a numpy.long symbol exposed, but it is just the builtin long type. However, numpy has no special support for Python's unbounded long type. You have to use object arrays if you want to hold them in numpy arrays.

On 5/1/07, Mark.Miller mpmusu@cc.usu.edu wrote:
OK...so just for future reference...does a Numpy 'long' not directly correspond to a Python 'long'?
No. A numpy long corresponds, more or less, to the C long long int.
In [2]: array([1],dtype=long) Out[2]: array([1], dtype=int64)
Chuck
participants (3)
-
Charles R Harris
-
Mark.Miller
-
Robert Kern