非常に古いコンピュータを使用していない限り、配列全体をメモリに配置する必要があります。100000*6*4./2**20 = 2.29
それらが浮動小数点数であると仮定すると、 Mbしかかかりません。ダブルスなら2倍。並べ替えには numpy の sort または argsort を使用できます。たとえば、2 番目の列から並べ替えインデックスを取得できます。
import numpy as np
a = np.random.normal(0, 1, size=(100000,6))
idx = a[:, 1].argsort()
そして、これらを使用して、必要な列または配列全体にインデックスを付けます。
b = a[idx]
さまざまな種類の並べ替えを使用して、速度を確認することもできます。
In [33]: %timeit idx = a[:, 1].argsort(kind='quicksort')
100 loops, best of 3: 12.6 ms per loop
In [34]: %timeit idx = a[:, 1].argsort(kind='mergesort')
100 loops, best of 3: 14.4 ms per loop
In [35]: %timeit idx = a[:, 1].argsort(kind='heapsort')
10 loops, best of 3: 21.4 ms per loop
したがって、このサイズの配列の場合、実際には問題にならないことがわかります。