Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Build an array with size (1,n) from an array with size (m, k) with a smarter way

I have a very large array with size (5, n), I want to build an array with size (1,20) from it in each iteration. I have to use a very basic approach to build my new array.
Here is an example:

A = np.array(
  [[4, 2, 1, 4, 0, 1, 3, 2, 4, 4],
   [4, 2, 0, 3, 1, 1, 4, 2, 2, 1],
   [3, 2, 3, 2, 0, 3, 4, 1, 4, 3],
   [1, 1, 1, 3, 1, 1, 3, 0, 2, 2],
   [3, 3, 4, 1, 4, 1, 0, 1, 0, 2]])

I want to build an array with size (1,20) from A. Which 0-4 is from row 0 of A, 4-8 from row 1 of A, 8-12 from row 2 A, and 12-16 from row 3, and 16-20 from row 4`. I use this code:

B = np.zeros((1, 20))
B[0, 0:4] =  A[0, 0:4]
B[0, 4:8] =  A[1, 0:4]
B[0, 8:12] =  A[2, 0:4]
B[0, 12:16] =  A[3, 0:4]
B[0, 16:20] =  A[4, 0:4]

and my B is :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

However, since I have a lot of this type of array in my code, I want to ask, do you have any solution which does not to need to use all of this lines of code for it? Thank you.

>Solution :

It seems you just want to slice the first four columns of A and flatten them row-wise:

A = 
 np.array(
  [[4, 2, 1, 4, 0, 1, 3, 2, 4, 4],
   [4, 2, 0, 3, 1, 1, 4, 2, 2, 1],
   [3, 2, 3, 2, 0, 3, 4, 1, 4, 3],
   [1, 1, 1, 3, 1, 1, 3, 0, 2, 2],
   [3, 3, 4, 1, 4, 1, 0, 1, 0, 2]])

B = A[:, 0:4].flatten()

Which gives the desired value of B, but with a shape (N, ).

array([4, 2, 1, 4, 4, 2, 0, 3, 3, 2, 3, 2, 1, 1, 1, 3, 3, 3, 4, 1])

Since you want your resulting array to have shape (1, N), you can just reshape it to that shape instead of flattening:

B = A[:, 0:4].reshape((1, -1))
# array([[4, 2, 1, 4, 4, 2, 0, 3, 3, 2, 3, 2, 1, 1, 1, 3, 3, 3, 4, 1]])

Reshaping to a shape of (1, -1) reshapes it to 1 row, and -1 (i.e. as many as required) columns.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading