Home > other >  How to transpose every n rows into columns in NumPy?
How to transpose every n rows into columns in NumPy?

Time:11-15

I have a numpy array of shape (1000000,).

I would like every n=1000 rows to become columns.

The resulting shape should be (1000, 1000)

How can I do this with NumPy? np.transpose() doesn't seem to do what I want.

I don't want to use a for loop for performance reasons.

CodePudding user response:

You can use reshape with the order='F' parameter:

Example with a (100,) 1D array converted to (10,10) 2D array:

a = np.arange(100). # array([0, 1, 2, ..., 98, 99])
b = a.reshape((10,10), order='F')

Output:

>>> b
array([[ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
       [ 1, 11, 21, 31, 41, 51, 61, 71, 81, 91],
       [ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92],
       [ 3, 13, 23, 33, 43, 53, 63, 73, 83, 93],
       [ 4, 14, 24, 34, 44, 54, 64, 74, 84, 94],
       [ 5, 15, 25, 35, 45, 55, 65, 75, 85, 95],
       [ 6, 16, 26, 36, 46, 56, 66, 76, 86, 96],
       [ 7, 17, 27, 37, 47, 57, 67, 77, 87, 97],
       [ 8, 18, 28, 38, 48, 58, 68, 78, 88, 98],
       [ 9, 19, 29, 39, 49, 59, 69, 79, 89, 99]])
  • Related