Сортировка массива numpy

Отсортировать двухмерный ndarray по возрастанию значения суммы по столбцу. А затем исключить максимальный элемент в каждом столбце и повторить сортировку.

Понял суть задания, но как исполнить вообще не могу догадаться.

Накалякал тут всякого. Я понял что нужно сначала суммировать по столбцу, затем отсортировать эти суммы по возрастанию, и как то сделать так, чтобы изначальный массив понял алгоритм сортировки(по сумме по столбцам), и отсортировал.

import numpy as np

a = np.random.randint(1, 10, size=(2, 4))
print(a)
print()

d = a.sum(axis=0)
print(d)
print()

d = np.argsort(a)
print(d)
print()

d.sort(axis=0)
print(d)
print()

a.sort(axis=0)
print(a)
print()

Ответы (1 шт):

Автор решения: strawdog

Насколько я понял ваше задание, сортировать массив перед удалением максимального элемента каждого столбца просто не имеет смысла. поэтому сначала сортируем столбцы, удаляем максимальные элементы в каждом, а потом уже сортируем по суммам столбцов

import numpy as np
np.random.seed(42)
a = np.random.randint(1, 16, size=(4, 4))

массив:

[[ 7  4 13 15]
 [11  8 13  5]
 [ 7 10  3  7]
 [11 11  8  5]]
a.sort(axis=0)
a = a[:-1,:]
s = sorted(list(enumerate(a.sum(axis=0))), key= lambda x: x[1])
idx = [x[0] for x in s]

res = a[:,idx]

res:

[[ 5  4  3  7]
 [ 5  8  8  7]
 [ 7 10 13 11]]
→ Ссылка