[Numpy-discussion] Selection of only a certain number of fields

Francesc Alted faltet@pytables....
Fri Feb 6 01:49:48 CST 2009


A Friday 06 February 2009, Travis Oliphant escrigué:
> Pierre GM wrote:
> > On Feb 5, 2009, at 6:08 PM, Travis E. Oliphant wrote:
> >> Hi all,
> >>
> >> I've been fairly quiet on this list for awhile due to work and
> >> family schedule, but I think about how things can improve
> >> regularly.    One feature that's been requested by a few people is
> >> the ability to select multiple fields from a structured array.
> >>
> >>
> >>
> >> [...]
> >
> > +1 for #2.
> >
> > Note that we now have a drop_fields function in
> > np.lib.recfunctions, a reimplementation of the equivalent function
> > in matplotlib. It works along the lines of your proposition #1
> > (create a new array w/ a new dtype and fill it)
>
> After more thought, I think I was too eager in my suggestion of #2.
> It's actually not really possible to do a view the way I would want
> it to work.   It would be possible to create a data-type with
> hidden-fields, but a copy would be not "get rid of the extra data".
>
> Thus  newarr = arr[['name', 'age']].copy() would be exactly the same
> size as arr because elements are  copied wholesale and each "row" is
> a single element in the NumPy array.    Some infrastructure would
> have to be implemented at a fundamental level to handle
> partial-element manipulation similar at least in spirit to what is
> needed to handle bit-level striding on a fundamental level.
>
> Also, I don't remember if we resolved how hidden fields would be
> shown in the array interface.
>
> So, I think that we may be stuck with #1 which at least is consistent
> with the "fancy-indexing" is a copy pattern (and is just syntatic
> sugar for capability you've already implemented in recfunctions).

Mmh, I'd also vote for #2 for performance reasons, but as the 
implementation seems quite involved, I suppose that #1 would be great 
too.

Cheers,

-- 
Francesc Alted


More information about the Numpy-discussion mailing list