TG wrote: > I tried to use Numeric.fromfunction, but there seems to be a problem : > > the function called must have the right number of args (hint : the > number of dimensions, which I don't know). So i tried to use a function > like : > > def myfunc(*args, **kw): > return 0 > > and then i get : > >>> Numeric.fromfunction(myfunc,(5,5)) > 0 > > I'm a bit puzzled here
In [24]: def myfunc(*args): ....: print args ....: ....: In [26]: fromfunction(myfunc, (2, 2)) (array([[0, 0], [1, 1]]), array([[0, 1], [0, 1]])) fromfunction() does not iterate over the possible indices and call the function with scalar arguments to get a scalar return value. It generates N arrays with index values in them and calls the function once with those arrays. The return value should be another array. If you actually just want 0s: In [27]: zeros((5, 5)) Out[27]: array([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]) If you want 1s: In [28]: ones((5, 5)) Out[28]: array([[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]) If you just want an array as fast as possible because you are going to fill in values later: In [29]: empty((5, 5)) Out[29]: array([[ 13691, 0, 0, 2883587, 3], [ 3, 0, 828189706, 6, 0], [ 0, 9, 10, 828202281, 0], [ 7, 0, 0, 0, 0], [ 0, 0, 0, 0, 0]]) If you have more complicated needs, we can talk about them on numpy-discussion. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list