Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a 2D list out of 1D list

Tags:

python

matrix

I am a bit new to Python and I want to convert a 1D list to a 2D list, given the width and length of this matrix.

Say I have a list=[0,1,2,3] and I want to make a 2 by 2 matrix of this list.

How can I get matrix [[0,1],[2,3]] width=2, length=2 out of the list?

like image 988
PhoonOne Avatar asked Feb 04 '13 06:02

PhoonOne


People also ask

How do you convert a 1d list to a 2d list?

Using islice The islice function can be used to slice a given list with certain number of elements as required by the 2D list. So here week looked through each element of the 2D list and use that value 2 slice the original list. We need itertools package to use the islice function.


2 Answers

Try something like that:

In [53]: l = [0,1,2,3]

In [54]: def to_matrix(l, n):
    ...:     return [l[i:i+n] for i in xrange(0, len(l), n)]

In [55]: to_matrix(l,2)
Out[55]: [[0, 1], [2, 3]]
like image 196
root Avatar answered Sep 17 '22 20:09

root


I think you should use numpy, which is purpose-built for working with matrices/arrays, rather than a list of lists. That would look like this:

>>> import numpy as np
>>> list_ = [0,1,2,3]
>>> a = np.array(list_).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a.shape
(2, 2)

Avoid calling a variable list as it shadows the built-in name.

like image 37
wim Avatar answered Sep 17 '22 20:09

wim