Reshape 1D List to 2D List -Python
Question:
I have the following list:
a = ['2', '3', '4', '7', '5']
I want to transform to a 2D matrix knowing that I have 4 columns, I do not consider rows here
I want to achieve this without repeating the items, just fill the rest with None
or empty space as follows:
New_a = [['2', '3', '4', '7'],
['5', None, None, None]]
I tried to reshape it using reshape function, but it did not work, because the target matrix is not consistent.
I also tried (resize function). It did not work because it repeat the items once there are some gaps at the end.
Answers:
New_a = []
a = ['2', '3', '4', '7', '5']
for i in range(0,len(a),4) :
New_a.append(a[i:i+4])
if len(New_a[-1]) != 4 :
New_a[-1] += [None]*(4-len(New_a[-1]))
print(New_a)
output :-
[['2', '3', '4', '7'], ['5', None, None, None]]
This should work for different lengths of the 1d array a
You can also use reisze() function of numpy array but it will fill your array with empty strings instead of None.
Example :-
a = ['2', '3', '4', '7', '5']
a1=np.array(a)
a1.resize((int(np.ceil(len(a)/4)),4))
a1
will look like this:-
array([['2', '3', '4', '7'],
['5', '', '', '']], dtype='<U1')
I have the following list:
a = ['2', '3', '4', '7', '5']
I want to transform to a 2D matrix knowing that I have 4 columns, I do not consider rows here
I want to achieve this without repeating the items, just fill the rest with None
or empty space as follows:
New_a = [['2', '3', '4', '7'],
['5', None, None, None]]
I tried to reshape it using reshape function, but it did not work, because the target matrix is not consistent.
I also tried (resize function). It did not work because it repeat the items once there are some gaps at the end.
New_a = []
a = ['2', '3', '4', '7', '5']
for i in range(0,len(a),4) :
New_a.append(a[i:i+4])
if len(New_a[-1]) != 4 :
New_a[-1] += [None]*(4-len(New_a[-1]))
print(New_a)
output :-
[['2', '3', '4', '7'], ['5', None, None, None]]
This should work for different lengths of the 1d array a
You can also use reisze() function of numpy array but it will fill your array with empty strings instead of None.
Example :-
a = ['2', '3', '4', '7', '5']
a1=np.array(a)
a1.resize((int(np.ceil(len(a)/4)),4))
a1
will look like this:-
array([['2', '3', '4', '7'],
['5', '', '', '']], dtype='<U1')