[Numpy-discussion] Segmentation fault

David Cournapeau david@ar.media.kyoto-u.ac...
Thu Apr 17 04:59:24 CDT 2008


Anne-Sophie Sertier wrote:
> Hello !
>
> I'm a new user of Numpy. I want to use it to work with matrices (very
> huge matrices), select column, make product, etc ...
> Configuration : Debian, python 2.4.4 and numpy 1.0.1
>
> So here is my problem:
> I initialize a matrix which will contain only 0 and 1
>
>  >>> from numpy import *
>   
>>>> matCons = zeros((194844,267595)),dtype=int8)
>>>>         

Unless you are executing this on a gigantic computer, this won't work 
very well: you are asking to create an array which has ~ 2e5^2 elements, 
that is around 40 Gb.

There is a bug, but the bug happens at the above line: the zeros call 
did not fail whereas it should have. It is likely caused because the 
number of elements cannot fit into a 32 bits integers, which means it 
overflows:

import numpy as np
n , m = 1e5,1e5
a = np.zeros((n, m), np.int8)
assert a.size == n * m

Will raise an assertion error (n * m is just big enough to not fit into 
a 32 bits integer in this case).

cheers,

David


More information about the Numpy-discussion mailing list