How do I do this? (in a computationally efficient way)
arr1 = np.array([0, 4, 8, 12, 16])
arr2 = np.array([1, 5, 9, 13, 17])
arr3 = np.array([2, 6, 10, 14, 18])
arr4 = np.array([3, 7, 11, 15, 19])
what_i_want = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
>Solution :
You can directly pass a list of arrays to np.ravel to flatten in Fortran order:
np.ravel([arr1, arr2, arr3, arr4], 'F')
Slower alternative with stack and ravel:
np.stack([arr1, arr2, arr3, arr4]).ravel('F')
output:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])