Сортировка массива 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 шт):
Насколько я понял ваше задание, сортировать массив перед удалением максимального элемента каждого столбца просто не имеет смысла. поэтому сначала сортируем столбцы, удаляем максимальные элементы в каждом, а потом уже сортируем по суммам столбцов
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]]