[Numpy-discussion] metadata and metabehavior for arrays (for scipy.base or Numeric3)

Sébastien de Menten sdementen at hotmail.com
Wed Apr 6 03:59:35 EDT 2005

>>1) attaching a physical unit to array data (see for instance Unum 
>>http://home.tiscali.be/be052320/Unum.html )
>>2) description of axis (see 
>>http://sourceforge.net/mailarchive/message.php?msg_id=11051806). Very 
>>useful to manipulate easily time series.
>Does the record array provide a means of addressing this need?

Not really, when I mean axis, I speak about indexing.
For an array (named a) with shape (10, 5, 33), I would like to attach 3 
arrays or list or tuple (named axis_information[0], axis_information[1] and 
axis_information[2])  of size (10,), (5,) and (33,)  which give sense to the 
first, second and third index.
For instance,
A[i,j,k] => means the element of A at (axis_information[0][i], 
axis_information[1][j], axis_information[2][k])
instead of
A[i,j,k] => means the element of A at index position [i,j,k] which makes 
less sense (you always need to track the meaning of i,j,k in parallel).

>>3) masked arrays as in MA module of Numeric

Maybe this one could be implemented using record array with a record like 
(data, mask).
However, it would be cumbersome to use.
E.g.  a.field("data")[:] = cos( a.field("data")[:] )
instead of
a[:] = cos(a[:])
with the current MA module

>>4) arrays for interval arithmetic where one keep another array with 
>>precision of data
>>5) record arrays (currently being integrated in scipy.base as a base type)
>Yes, and there is numarray's array of objects.

This is overkilling as it eats way too much memory.
E.g. your data represents instantaneous speeds and so it tagged with a "m/s" 
information (a complex object) valid for the full array. Distributing this 
information to each component of an array via an array object is not 

More information about the NumPy-Discussion mailing list