[Numpy-discussion] recarrays and lists of lists

Travis Vaught travis at vaught.net
Sun Sep 11 01:30:23 EDT 2011


Greetings,

Is there a particular reason why a list of lists can't be passed in to create a recarray given a particular dtype?

A list of tuples works fine.  I keep getting bitten by this and was thinking it should be an easy check/convert for an allowance for a row to be a list _or_ a tuple?

Here's a session:

~~~~~~~~~~

In [2]: import numpy as np

In [3]: dt = np.dtype({'names':['a', 'b', 'c'], 'formats':[float]*3})

In [4]: dt
Out[4]: dtype([('a', '<f8'), ('b', '<f8'), ('c', '<f8')])

In [5]: rows = [[1,2,3],[2,3,4],[3,4,5]]

In [6]: ary = np.array(rows, dtype=dt)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/Users/travis/git/trading/<ipython-input-6-b69b5c361254> in <module>()
----> 1 ary = np.array(rows, dtype=dt)

TypeError: expected a readable buffer object

In [7]: rows2 = [tuple(row) for row in rows]

In [8]: ary = np.array(rows2, dtype=dt)

In [9]: ary
Out[9]: 
array([(1.0, 2.0, 3.0), (2.0, 3.0, 4.0), (3.0, 4.0, 5.0)], 
      dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8')])

~~~~~~~~~~

Thoughts?

Best,

Travis




More information about the NumPy-Discussion mailing list