Numpy.array with dtype works on list of tuples not on list of lists?
robert.kern at gmail.com
Sun Sep 18 22:31:58 CEST 2011
On 9/18/11 10:55 AM, Alex van der Spek wrote:
> Why does this not work?
> Traceback (most recent call last):
> File "<pyshell#91>", line 1, in <module>
> TypeError: expected a readable buffer object
> But this does:
> array([(1.0, 2.0, 3.0), (4.0, 5.0, 6.0)], dtype=[('a', '<f4'), ('b', '<f4'),
> ('c', '<f4')])
> The only difference that the object is a list of tuples now?
numpy questions are best asked on the numpy mailing list:
To answer your question, though, numpy.array() needs to figure out a lot of
different things about the input data simultaneously, in particular its shape.
Structured arrays (i.e. with elements that have individual fields as above) pose
a new problem in that its individual elements are sequences themselves. In order
to help it decide whether it should recurse down into a sequence to find its
elements or decide that the sequence *is* an element in its own right, we
settled on the convention that tuples are to be considered elements and that
lists are sequences of elements.
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list