Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Losing dimensions of a numpy array

I have a numpy array that consists of lists each containing more lists. I have been trying to figure out a smart and fast way to collapse the dimensions of these list using numpy, but without any luck.

What I have looks like this:

>>> np.shape(projected)
(13,)
>>> for i in range(len(projected)):
    print np.shape(projected[i])
(130, 3200)
(137, 3200)
.
.
(307, 3200)
(196, 3200)

What I am trying to get is a list that contains all the sub-lists and would be 130+137+..+307+196 long. I have tried using np.reshape() but it gives an error: ValueError: total size of new array must be unchanged

np.reshape(projected,(total_number_of_lists, 3200))
>> ValueError: total size of new array must be unchanged

I have been fiddling around with np.vstack but to no avail. Any help that does not contain a for loop and an .append() would be highly appreciated.

like image 484
NicolaiF Avatar asked May 31 '26 16:05

NicolaiF


1 Answers

It seems you can just use np.concatenate along the first axis axis=0 like so -

np.concatenate(projected,0)

Sample run -

In [226]: # Small random input list
     ...: projected = [[[3,4,1],[5,3,0]],
     ...:              [[0,2,7],[8,2,8],[7,3,6],[1,9,0],[4,2,6]],
     ...:              [[0,2,7],[8,2,8],[7,3,6]]]

In [227]: # Print nested lists shapes
     ...: for i in range(len(projected)):
     ...:     print (np.shape(projected[i]))
     ...:     
(2, 3)
(5, 3)
(3, 3)

In [228]: np.concatenate(projected,0)
Out[228]: 
array([[3, 4, 1],
       [5, 3, 0],
       [0, 2, 7],
       [8, 2, 8],
       [7, 3, 6],
       [1, 9, 0],
       [4, 2, 6],
       [0, 2, 7],
       [8, 2, 8],
       [7, 3, 6]])

In [232]: np.concatenate(projected,0).shape
Out[232]: (10, 3)
like image 115
Divakar Avatar answered Jun 02 '26 05:06

Divakar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!