Вы можете просто использовать np.partition
вдоль столбцов, чтобы получить наименьшие N
числа -
N = 2
np.partition(a,kth=N-1,axis=0)[:N]
На самом деле это не сортирует все данные, а просто разделяет их на два разделов , так что наименьшие N чисел находятся в первом разделе , также называемом partial-sort
.
Бонус (получение N первых элементов): Точно так же, чтобы получить верхние N
чисел на столбец, просто используйте отрицательное kth
значение -
np.partition(a,kth=-N,axis=0)[-N:]
Вдоль других осей и более высоких тусклых массивов
Чтобы использовать его по другим осям, измените значение axis
. Таким образом, по строкам это будет axis=1
для 2D-массива и аналогичное расширение для ndarrays более высокого измерения.