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 шт):

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

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

  • a.sum(axis=...) - для получения суммы по строкам/столбцам (в зависимости от axis)
  • a.sort(axis=...) - для сортировки строк/колонок
  • np.argsort(...) - для получения порядка сортировки значений
  • a[...:...] - для получения среза данных с нужным диапазоном и/или порядком индексов

Вам просто нужно применить эти методы с подходящими аргументами и использовать их в нужном порядке.

Но так то суть задания в том, чтобы сначала взять суммы по столбцам и отсортировать столбцы по значениям этих сумм (в каком порядке они идут, тут и пригодится argsort). А затем выкинуть максимумы по столбцам и сделать сортировку ещё раз. Выкинуть максимумы на мой взгляд проще всего через сортировку + срез (взять от отсортированного для этого массива все строки, кроме строки с максимумами).

→ Ссылка