How can I make a function equal to 0?
gagsl-py2 at yahoo.com.ar
Fri Mar 21 22:51:49 CET 2008
On 21 mar, 17:43, Martin Manns <mma... at gmx.net> wrote:
> Basically I have a lot of functions inside a numpy array,
> of which most return "" and actually are derived as follows:
> from numpy import *
> grid_size = 1000000
> class F(object):
> def __cmp__(self, other): return 0
> def __call__(self, dummy): return ""
> f = F()
> myarray = array([f] * grid_size, dtype="O")
> # I re-define an element in the array
> myarray = lambda x: "23"
> # Now, I would like to loop over all re-defined elements:
> for i in itertools.izip(*nonzero(myarray)):
> print myarray[i]()
> If I fill the array with 0 instead of the functions that
> return "" this works really fast.
> However, I would like to be able call the content of each
> cell in the array as a function.
If you drop this condition then you could fill the array with zeroes
as before, replace only the interesting ones with actual functions,
for item in myarray[nonzero(myarray)]:
print item() if callable(item) else item
> As I said, the callable object approach works but is
> about as slow as iterating through the whole array.
> Perhaps I should add a __call__ function to the built-in
> 0? But I doubt that this helps.
You can't - anyway, being Python code, would not help with the speed.
More information about the Python-list