# [Numpy-discussion] Documentation for dtypes with named fields

josef.pktd@gmai... josef.pktd@gmai...
Tue Mar 16 08:14:38 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
> 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.

structured arrays, or structured dtypes (similar to recarrays but simpler)

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

the best information, I think, is on the mailing list, search for
structured array

e.g. slicing is not possible, slicing requires a view as regular ndarray

there are some slightly hidden (because still work in progress) helper functions
>>> import numpy.lib.recfunctions
>>> dir(numpy.lib.recfunctions)

Josef

>
> 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?
>
> 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?
>
> 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?
>
> thanks
>
> Sam
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
```