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)
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.