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

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?

asked Feb 4, 2013 at 6:45

1

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]]

answered Feb 4, 2013 at 6:51

rootroot

72k25 gold badges104 silver badges119 bronze badges

1

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.

answered Feb 4, 2013 at 7:00

wimwim

311k94 gold badges569 silver badges709 bronze badges

3

not as elegant and pretty specific to yours, but you create 2 lists [every other integer] and zip/list them back together.

full_list = [0, 1, 2, 3]
list1 = []
list2 = []
for i in full_list:
  if i % 2 == 0:
    list1.append[i]
  else:
    list2.append[i]

zip_list = zip[list1, list2]
done = list[zip_list]

output:
[[0, 1], [2, 3]]

answered Sep 8 at 4:20

Given a 2D list, Write a Python program to convert the given list into a flattened list. 

Method #1: Using chain.iterable[] 

Python3

from itertools import chain

ini_list = [[1, 2, 3],

            [3, 6, 7],

            [7, 5, 4]]

print ["initial list ", str[ini_list]]

flatten_list = list[chain.from_iterable[ini_list]]

print ["final_result", str[flatten_list]]

Output:

initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]

Method #2: Using list comprehension 

Python3

from itertools import chain

ini_list = [[1, 2, 3],

            [3, 6, 7],

            [7, 5, 4]]

print ["initial list ", str[ini_list]]

flatten_list = [j for sub in ini_list for j in sub]

print ["final_result", str[flatten_list]]

Output:

initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]

Method #3: Using functools.reduce  

Python3

from functools import reduce

ini_list = [[1, 2, 3],

            [3, 6, 7],

            [7, 5, 4]]

print ["initial list ", str[ini_list]]

flatten_list = reduce[lambda z, y :z + y, ini_list]

print ["final_result", str[flatten_list]]

Output:

initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]

Method #4: Using sum
sum has an optional argument: sum[iterable [, start]]

Python3

ini_list = [[1, 2, 3],

            [3, 6, 7],

            [7, 5, 4]]

print ["initial list ", str[ini_list]]

flatten_list = sum[ini_list, []]

print ["final_result", str[flatten_list]]

Output: 

initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]

Method #5: Using lambda  

Python3

ini_list=[[1, 2, 3],

          [3, 6, 7],

          [7, 5, 4]]

flatten_list = lambda y:[x for a in y for x in flatten_list[a]] if type[y] is list else [y]

print["Initial list ",ini_list]

print["Flattened List ",flatten_list[ini_list]]

Output: 

Initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened List  [1, 2, 3, 3, 6, 7, 7, 5, 4]

Method #6: Using numpy  

Python3

import numpy

ini_list=[[1, 2, 3],

          [3, 6, 7],

          [7 ,5, 4]]

print["Initial list ",ini_list]

print["Flattened List ",list[numpy.concatenate[ini_list].flat]]

Output: 

Initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened List  [1, 2, 3, 3, 6, 7, 7, 5, 4]

 Method #7: Using extend[] method

Python3

ini_list=[[1, 2, 3],[3, 6, 7],[7 ,5, 4]]

print["Initial list ",ini_list]

res=[]

for i in ini_list:

    res.extend[i]

print["Flattened List ",res]

Output

Initial list  [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
Flattened List  [1, 2, 3, 3, 6, 7, 7, 5, 4]


How do you convert 1D to 2D list in Python?

We also supply the values for the number of elements inside the 2D list to the program..
Using append and index. In this approach we will create a for loop to loop through each element in the 2D list and use it as an index for the new list to be created. ... .
Example. ... .
Output. ... .
Using islice. ... .
Example. ... .
Output..

How do you convert 1D to 2D?

Use reshape[] Function to Transform 1d Array to 2d Array The number of components within every dimension defines the form of the array. We may add or delete parameters or adjust the number of items within every dimension by using reshaping.

How do you make a two

myList = [0,1,2,3,4,5,6,7,8,9]; for index in len[myList]: myList[index] = 0 # Set element at "index" to 0. For a two-dimensional list, in order to reference every element, we must use two nested loops. This gives us a counter variable for every column and every row in the matrix.

How do you reshape 1D to 2D numpy?

Use numpy. reshape[] to reshape a 1D NumPy array to a 2D NumPy array. Call numpy. reshape[a, newshape] with a as a 1D array and newshape as the tuple [-1, x] to reshape the array to a 2D array containing nested arrays of x values each.

Chủ Đề