[Numpy-discussion] Documentation for dtypes with named fields

Skipper Seabold jsseabold@gmail....
Tue Mar 16 08:10:14 CDT 2010


On Tue, Mar 16, 2010 at 8:47 AM, Sam Tygier
<Sam.Tygier@hep.manchester.ac.uk> wrote:
> Hello
>
> I can't find much documentation for using arrays where the dtype has named fields (is there a term for this sort of array). there is some in

Structured array (or record array if you make a record array -- the
difference is record array allows access to the fields through
attribute).

http://docs.scipy.org/doc/numpy/user/basics.rec.html

There might be another page, but I can't find it right now.

> http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
> http://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html
> but that's most creation.
>
> for example if i have
> a = zeros(5, dtype=[('a','f'), ('b','f'), ('c','i')])
> and fill it with values.
>
> if i want to fill a row, i can do
> a[0] = (0.1,0.2,3)
> but if i use a list it wont work
> a[0] = [0.1,0.2,3]
> is there an explanation of why?
>

Structured arrays expect tuples.

> now if i wanted to do some sort of conversion, eg multiply columns 'a' and 'b' by 10, is there a way to do
> a *= [10,10,1]
> like i would do with a if were a zeros((5,3)) array
> is
> a['a'] *= 10
> a['b'] *= 10
> the best method?
>

I think so.

> also whats the best way to take a slice of the columns? if i want just the 'a' and 'b' columns. if it were a 2d array i could do
> a[0:2]
> but
> a['a':'b']
> does not work. is there a way to do this?
>

a[['a','b']]

Notice the list within a list notation.

Skipper


More information about the NumPy-Discussion mailing list