List of lists into numpy array List of lists into numpy array numpy numpy

List of lists into numpy array


If your list of lists contains lists with varying number of elements then the answer of Ignacio Vazquez-Abrams will not work. Instead there are at least 3 options:

1) Make an array of arrays:

x=[[1,2],[1,2,3],[1]]y=numpy.array([numpy.array(xi) for xi in x])type(y)>>><type 'numpy.ndarray'>type(y[0])>>><type 'numpy.ndarray'>

2) Make an array of lists:

x=[[1,2],[1,2,3],[1]]y=numpy.array(x)type(y)>>><type 'numpy.ndarray'>type(y[0])>>><type 'list'>

3) First make the lists equal in length:

x=[[1,2],[1,2,3],[1]]length = max(map(len, x))y=numpy.array([xi+[None]*(length-len(xi)) for xi in x])y>>>array([[1, 2, None],>>>       [1, 2, 3],>>>       [1, None, None]], dtype=object)


>>> numpy.array([[1, 2], [3, 4]]) array([[1, 2], [3, 4]])


As this is the top search on Google for converting a list of lists into a Numpy array, I'll offer the following despite the question being 4 years old:

>>> x = [[1, 2], [1, 2, 3], [1]]>>> y = numpy.hstack(x)>>> print(y)[1 2 1 2 3 1]

When I first thought of doing it this way, I was quite pleased with myself because it's soooo simple. However, after timing it with a larger list of lists, it is actually faster to do this:

>>> y = numpy.concatenate([numpy.array(i) for i in x])>>> print(y)[1 2 1 2 3 1]

Note that @Bastiaan's answer #1 doesn't make a single continuous list, hence I added the concatenate.

Anyway...I prefer the hstack approach for it's elegant use of Numpy.