It'll work, it is equivalent to the suggestion I made in my previous post
with the f_inplace wrapper function (and it has the same drawback that numpy
will allocate temporary memory, which wouldn't be the case if f was working
in-place directly, by implementing it as "arr *= 2").
Note that you don't need to write x[:] * 2, you can write x * 2 directly.
-=- Olivier
2011/10/1 David Froger
Thanks everybody for the different solutions proposed, I really appreciate. What about this solution? So simple that I didn't think to it...
import numpy as np from numpy import *
def f(arr): return arr*2
a = array( [1,1,1] ) b = array( [2,2,2] ) c = array( [3,3,3] ) d = array( [4,4,4] )
for x in (a,b,c,d): x[:] = x[:]*2 #instead of: x = x*2
print a print b print c print d -- _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion