From: Konrad H. <hi...@cn...> - 2002-09-13 10:33:23
|
Huaiyu Zhu <hua...@ya...> writes: > Two related questions: > > 1. Suppose B = ravel(A) and > B[i] corresponds to A[i0,i1,...]. > > Are there named functions that map the indices > > (i0,i0,...) -> i > > and back? This is assuming A.shape = (m0,m1,...) is known. Untested, but the idea should work: def ravel_index(array, *indices): offsets = Numeric.multiply.accumulate(array.shape[1:][::-1])[::-1] return Numeric.sum(Numeric.array(indices[:-1])*offsets) + indices[-1] > 2. Suppose the above function is called ravel_index and its > inverse unravel_index. > > Given a list of matrices [A0, A1, ...] is there a function that > calculates a matrix B such that > > B[i,j] = A0[i0,j] * A1[i1,j] * ... > > where i = ravel_index(i0, i1, ...). Not for all i, which I assume is what you want to do. Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hi...@cn... Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.56.24 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais ------------------------------------------------------------------------------- |