Hi Vincent

2008/5/20 Vincent Schut <[EMAIL PROTECTED]>:
> Hi, I'm trying to get into recarrays. Unfortunately documentation is a
> bit on the short side...
>
> Lets say I have a rgb image of arbitrary size, as a normal ndarray
> (that's what my image reading lib gives me). Thus shape is
> (3,ysize,xsize), dtype = int8. How would I convert/view this as a
> recarray of shape (ysize, xsize) with the first dimension split up into
> 'r', 'g', 'b' fields? No need for 'x' and 'y' fields.

First, you need to flatten the array so you have one (r,g,b) element
per row.  Say you have x with shape (3, 4, 4):

x = x.T.reshape((-1,3))

Then you can view it with your new dtype:

dt = np.dtype([('r',np.int8),('g',np.int8),('b',np.int8)])
x = x.view(dt)

Then you must reshape it back to your original pixel arrangement:

x = x.reshape((4,4)).T

Or you can do it all in one go:

x.T.reshape((-1,x.shape[0])).view(dt).reshape(x.shape[1:]).T

Maybe someone else comes up with an easier way.

Cheers
Stéfan
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to