[Numpy-discussion] memoization with ndarray arguments
Paul Northug
pnorthug@gmail....
Sat Mar 21 13:18:56 CDT 2009
I would like to 'memoize' the objective, derivative and hessian
functions, each taking a 1d double ndarray argument X, that are passed
as arguments to
scipy.optimize.fmin_ncg.
Each of these 3 functions has calculations in common that are
expensive to compute and are a function of X. It seems fmin_ncg
computes these quantities at the same X over the course of the
optimization.
How should I go about doing this?
numpy arrays are not hashable, maybe for a good reason. I tried anyway
by keeping a dict of hash(tuple(X)), but started having collisions.
So I switched to md5.new(X).digest() as the hash function and it seems
to work ok. In a quick search, I saw cPickle.dumps and repr are also
used as key values.
I am assuming this is a common problem with functions with numpy array
arguments and was wondering what the best approach is (including not
using memoization).
Thanks,
Pål.
More information about the Numpy-discussion
mailing list