[Numpy-discussion] Using sum() within a function

Jim Cser jimcser at pacifier.com
Mon Aug 16 09:59:07 EDT 2004


Perry Greenfield wrote:

> Jim Cser wrote:
> 
>>Instead, I'm trying to do something like--
>>def f3(x,y,z):
>>   for t in range(numT):
>>     tempval = f1(x,y,z,t) * f2(y,z,t)
>>
>>   outval = sum(tempval,axis = 3)
>>   return outval
>>
> 
> Perhaps I'm confused but it seems to me the for loop is wrong.
> 
> Don't you want something like:
> 
> def f3(x,y,z):
>    tempval = 0.*x
>    for t in range(numT):
>      tempval += f1(x,y,z,t) * f2(y,z,t)
>    return tempval
> 
> Instead?
> 
> Not that I've tried this, but so long as the function will
> work given 3-d arrays for x,y,z, it should. (though the dependence
> on numT as a global is a bit worrisome)
> 
> Perry GReenfield


The loop was indeed wrong, and "tempval = 0.*x" was the trick I needed, 
thanks.  Unfortunately, iterating over t is still extremely slow. 
Ideally, there would be a way to use fromfunction() with slices as 
arguments.

-Jim




More information about the NumPy-Discussion mailing list