'Python reshape list to ndim array

Hi I have a list flat which is length 2800, it contains 100 results for each of 28 variables: Below is an example of 4 results for 2 variables

[0,
 0,
 1,
 1,
 2,
 2,
 3,
 3]

I would like to reshape the list to an array (2,4) so that the results for each variable are in a single element.

[[0,1,2,3],
 [0,1,2,3]]


Solution 1:[1]

You can think of reshaping that the new shape is filled row by row (last dimension varies fastest) from the flattened original list/array.

If you want to fill an array by column instead, an easy solution is to shape the list into an array with reversed dimensions and then transpose it:

x = np.reshape(list_data, (100, 28)).T

Above snippet results in a 28x100 array, filled column-wise.

To illustrate, here are the two options of shaping a list into a 2x4 array:

np.reshape([0, 0, 1, 1, 2, 2, 3, 3], (4, 2)).T
# array([[0, 1, 2, 3],
#        [0, 1, 2, 3]])

np.reshape([0, 0, 1, 1, 2, 2, 3, 3], (2, 4))
# array([[0, 0, 1, 1],
#        [2, 2, 3, 3]])

Solution 2:[2]

You can specify the interpretation order of the axes using the order parameter:

np.reshape(arr, (2, -1), order='F')

Solution 3:[3]

Step by step:

# import numpy library
import numpy as np
# create list
my_list = [0,0,1,1,2,2,3,3]
# convert list to numpy array
np_array=np.asarray(my_list)
# reshape array into 4 rows x 2 columns, and transpose the result
reshaped_array = np_array.reshape(4, 2).T 

#check the result
reshaped_array
array([[0, 1, 2, 3],
       [0, 1, 2, 3]])

Solution 4:[4]

The answers above are good. Adding a case that I used. Just if you don't want to use numpy and keep it as list without changing the contents.

You can run a small loop and change the dimension from 1xN to Nx1.

    tmp=[]
    for b in bus:
        tmp.append([b])
    bus=tmp

It maybe not efficient in case of very large numbers. But it works for small set of numbers. Thanks

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Mad Physicist
Solution 3 cristiandatum
Solution 4 Ibrahim