Форум сайта python.su
0
Дана матрица размера M × N. Удалить столбец, содержащий максимальный элемент
матрицы.
Почти доделал, в конце прога находит номер столбца с максимальным элементом, но не знаю как удалить.
# Задание - дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов # И вывести данный номер, а также значение наибольшей суммы. # Импорт библиотеки для работы с двумерными массивами import numpy as np # Пользовательский ввод строк и столбцов M = int(input("Введите количество строк: ")) N = int(input("Введите количество столбцов: ")) # Создание двумерного массива со случайными числами в пределах от 0 до 50 A = np.random.randint(50, size = (M,N)) # Создание словаря из количества строк и столбцов Matrix = {M, N} print("\nМатрица {M} x {N}:\n".format(M = M, N = N),A) # С помощью функций sum(axis = 1), вычисляется сумма в каждом столбце (1 - по строкам, 0 - по колонкам) и argmax, которая вычисляет номер строки с максимальной суммой print("\nНомер столбца с максимальной суммой:",A.sum(axis = 0).argmax()) # Пытался удаление сделать, но работает странно dela = np.delete(A,A.sum(axis = 0).argmax()) print(dela)
Офлайн
568
Mutantне надо удалять, создайте другую матрицу не содержащую столбца и присвойте её значение той же переменной
но не знаю как удалить.
Офлайн
0
FishHookА как дать понять программе, что столбец, который я нашел не нужно печатать?
Офлайн
568
Mutant
Я не посмотрел, что у вас работа с numpy, про numpy я не знаю ничего, сорри
Офлайн
72
# Пытался удаление сделать, но работает странно dela = np.delete(A, A.sum(axis = 0).argmax(), 1) # <—— пропущен третий параметр: axis print(dela)
Офлайн
0
ramiСпасибо, все работает
Офлайн
0
ramiДико извиняюсь, задание немного не дочитал, нужно найти максимальный элемент и удалить колонку с ним. Я немного изменил код, но почему-то удаляет 2 колонки.
# Задание - дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов # И вывести данный номер, а также значение наибольшей суммы. # Импорт библиотеки для работы с двумерными массивами import numpy as np # Пользовательский ввод строк и столбцов M = int(input("Введите количество строк: ")) N = int(input("Введите количество столбцов: ")) # Создание двумерного массива со случайными числами в пределах от 0 до 50 A = np.random.randint(50, size = (M,N)) # Создание словаря из количества строк и столбцов Matrix = {M, N} print("\nМатрица {M} x {N}:\n".format(M = M, N = N),A) # С помощью функций sum(axis = 1), вычисляется сумма в каждой строке (1 - по строкам, 0 - по колонкам) и argmax, которая вычисляет номер строки с максимальной суммой print("\nНомер максимального элемента матрицы:",np.argmax(A)) dela = np.delete(A,A.argmax(axis = 0), 1) print(dela)
Прикреплённый файлы:
Снимок.PNG (8,1 KБ)
Офлайн
72
dela = np.delete(A, A.max(axis = 0).argmax(), 1)
Офлайн
0
ramiСпасибо, выручили
Офлайн
0
ramiМожете вкратце пояснить строчку, точнее 2 и 3 параметр? “dela = np.delete(A, A.max(axis = 0).argmax(), 1)”. Я так понимаю, что A.max(axis = 0) находит максимальный элемент по столбцам, а что тогда делает argmax() (разве не тоже самое)? И почему 3 параметр = 1, разве 1 это не по строчкам удаление должно быть, а о по столбцам?
Отредактировано Mutant (Авг. 2, 2020 18:54:56)
Офлайн