[Numpy-discussion] vectorizing loops
Robert Kern
robert.kern at gmail.com
Fri Oct 26 02:56:26 EDT 2007
Gael Varoquaux wrote:
> On Thu, Oct 25, 2007 at 04:16:06PM -0700, Mathew Yeates wrote:
>> Anybody know of any tricks for handling something like
>
>> z[0]=1.0
>> for i in range(100):
>> out[i]=func1(z[i])
>> z[i+1]=func2(out[i])
>
> Something like:
>
> z[0] = 1.
> out = func1(z)
> z[1:] = func2(out[:-1])
No, that doesn't work. The way you have it, for each i>0,
z[i] = func2(func1(0))
What Matthew wants is this
z[0] = 1.0
z[1] = func2(func1(1.0))
z[2] = func2(func1(func2(func1(1.0))))
...
I'm afraid that there is no fast, elegant way to do this. If you could turn
func2(func1(x)) into a binary ufunc f(x, y) with an ignored y, then you could
call f.accumulate(z). However, if that ufunc is not implemented in C, there's
not much point.
--
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
More information about the NumPy-Discussion
mailing list