[Numpy-discussion] Tensor-like product with extra indices?

Konrad Hinsen hinsen at cnrs-orleans.fr
Fri Sep 13 03:34:02 EDT 2002


Huaiyu Zhu <huaiyu_zhu at yahoo.com> 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: hinsen at cnrs-orleans.fr
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
-------------------------------------------------------------------------------




More information about the NumPy-Discussion mailing list