Python. Не могу понять суть задания
Отсортировать двухмерный ndarray по возрастанию значения суммы по столбцу. А затем исключить максимальный элемент в каждом столбце и повторить сортировку.
import numpy as np
a = np.random.randint(1, 10, size=(2, 3))
print(a)
print()
a.sort(axis=0)
print(a, "\n", type(a))
print()
d = a.max(axis=0)
print(d)
Как я понял, если, конечно, это правильно, то нужно отсортировать по столбцу, а потом найти максимальный элемент и как-то удалить из массива.
Ответы (1 шт):
Поскольку это учебное задание, готовый вариант ответа давать не спортивно. Но я вам покажу откуда готовилось нападение какие функции можно использовать:
a.sum(axis=...)- для получения суммы по строкам/столбцам (в зависимости отaxis)a.sort(axis=...)- для сортировки строк/колонокnp.argsort(...)- для получения порядка сортировки значенийa[...:...]- для получения среза данных с нужным диапазоном и/или порядком индексов
Вам просто нужно применить эти методы с подходящими аргументами и использовать их в нужном порядке.
Но так то суть задания в том, чтобы сначала взять суммы по столбцам и отсортировать столбцы по значениям этих сумм (в каком порядке они идут, тут и пригодится argsort). А затем выкинуть максимумы по столбцам и сделать сортировку ещё раз. Выкинуть максимумы на мой взгляд проще всего через сортировку + срез (взять от отсортированного для этого массива все строки, кроме строки с максимумами).