[SciPy-dev] [SciPy-user] New named fields in scipy core --- possible uses in color images
gruben at bigpond.net.au
Thu Dec 15 17:44:57 CST 2005
I think this named record feature will be quite popular. I was expecting
that fields would be accessed using a syntax like image.r image.g etc.
However, using strings as Travis has done suggests other possibilities
for accessing slices such as image['rgb'] or image['r','g','b'] and
perhaps image['g','b','r']. Just putting this out to see if it's a good
Travis E. Oliphant wrote:
> I know that many people are not aware of the new named fields that are
> now an integral part of scipy_core. So, here is a simple example of
> their use.
> First of all, named fields can be constructed from any data type, not
> just records. The only thing the recarray subclass does is to make
> construction a bit cleaner, perhaps, and to allow attribute access to
> Consider the following code (works with recent SVN):
> image = zeros((256,256),dtype=(uint32,
> This creates an array of zeros (which for math operations can be
> interpreted as an unsigned 32-bit integer) but which has named fields
> 'r', 'g', 'b', and 'a'.
> These fields can be accessed (as unsigned 8-bit integers) using
> or the whole image can be accessed at one time using the image array.
> I'm not sure, aside from perhaps code readibility, if there is any
> benefit from this approach over the standard representation as
> image = zeros((256,256,4), dtype=uint8)
> but, it's kind of interesting that such things are now possible.
> Note, however, that one thing the records.py module provides over this
> simple approach is an "array-scalar" that also can have fields.
> In our example:
> image['r'][10,20] would work and return a uint8 scalar, but
> image[10,20]['r'] would not because image[10,20] is a uint32 scalar (no
> image[10,20].getfield(*image.dtypedescr.fields['r']) would work though.
> Have fun...
> SciPy-user mailing list
> SciPy-user at scipy.net
More information about the Scipy-dev