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