[Numpy-discussion] Creating multirow numpy rec.arrays

Francesc Altet faltet at carabos.com
Wed Jan 25 04:16:02 EST 2006


Hi,

This exposes a weird behaviour when building heterogeneous arrays in
numpy:

In [85]: xcol = numpy.ones((3,2), 'int32')

In [86]: numpy.array([(xcol[0],)], dtype=[('x','i4', (2,))])
Out[86]: array([(array([1, 1]),)], dtype=(void,8))

So far so good. Now:

In [89]: numpy.array([xcol], dtype=[('x','i4', (2,))])
<ERROR: expected a readable buffer object>
array([[[(array([-1208633192, -1208633192]),), (array([15, 15]),)],
        [(array([  0, 185]),), (array([         18, -1208633016]),)],
        [(array([480,  21]),), (array([21, 21]),)]]], dtype=(void,8))

While I'd expect:

In [89]: numpy.array([xcol], dtype=[('x','i4', (2,))])
Out[89]: array([(array([1, 1]),
                (array([1, 1]),
		(array([1, 1]))], dtype=(void,8))

Also, for the whishlist: It would be nice if one can specify the shape
of the array to be built in the factory itself. I mean, allowing
something like:

In [90]: numpy.array([xcol], dtype=[('x','i4', (2,))], shape=2)
Out[90]: array([(array([1, 1]),
		(array([1, 1]))], dtype=(void,8))

Cheers,

-- 
>0,0<   Francesc Altet     http://www.carabos.com/
V   V   Cárabos Coop. V.   Enjoy Data
 "-"





More information about the NumPy-Discussion mailing list