[Numpy-discussion] Proposed record array behavior: the rest of the story: updated

gerard.vermeulen at grenoble.cnrs.fr gerard.vermeulen at grenoble.cnrs.fr
Tue Jul 27 13:05:06 CDT 2004


On Tue, 27 Jul 2004 20:46:52 +0200, Francesc Alted wrote
> A Dimarts 27 Juliol 2004 20:21, Colin J. Williams va escriure:
> > If one starts with the assumption that field/attribute names are 
> > compatible with Python names, then I don't see that this is a problem.  
> > The question has been raised as to whether a wider range of names should 
> > be permitted e.g.. including such characters as ~`()!çéë.  My view is 
> > that such characters should be considered acceptable for data labels, 
> > but not for data names. i.e. they are for display, not for manipulation.
> 
> I finally was able to see your point. You mean that naming a field 
> with a non-python identifier would be forbidden, and provide another 
> attribute
> (like 'title', for example) in case the user wants to add some kind 
> of data label. Kind of:
> 
> records.array([...], names=["c1","c2","c3"], titles=["F one",
> "time&dime","çò"])
> 
> and have a new attribute called "titles" that keeps this info.
> 
> Well, I think that would be a very nice solution IMO.
> 

I agree with Rick, Colin and Francesc on this point: symbolic names
are important and I like the commandline completion too.

However, I have another concern:

Introducing recordArray["column"] as an alternative for
recordArray.field("column") breaks a symmetry between for instance 1-d
record arrays and 2-d normal arrays. (the symmetry is strongly suggested
by their representation: a record array prints almost as a list of tuples
and a 2-d normal array almost as a list of lists).

Indexing a column of a 2-d normal array is done by normalArray[:, column],
so why not recArray[:, "column"] ?

It removes the ambiguity between indexing with integers and with strings.
Also, leaving the indices in 'natural' order becomes especially important
when one envisages (record) arrays containing (record) arrays containing ....

I understand that this seems to open the door to recArray[32, "column"],
but if it is really not feasible to mix integers and strings (or attribute
names) as indices, I prefer to use

recordArray.column[32]

and/or

recordArray[32].column

rather than recordArray["column"][32].


Even indexing with integers only seems more natural to me than eg.
recordArray["column"][32], sincy I can always do:

column = 7
recordArray[32, column]

Regards -- Gerard





More information about the Numpy-discussion mailing list