@Sawayadi

Как вывести по отдельности максимальный элемент столбца?

У меня есть сгенерирована матрица 3*3 с помощью библиотеки numpy.
import numpy
import numpy as np
arr = np.random.randint(230,400, size=[3, 3])

Я хочу чтоб выводился текст в котором говорится в каком столбце находится максимальный элемент. То есть для примера:
"В 0-ом столбце максимальный элемент: ...";
"В 1-ом столбце максимальный элемент: ...";
"В 2-ом столбце максимальный элемент: ...";
Я как-то пробывал через цикл for...но выходит с ошибкой
for len(arr_n[0]) in arr:
print("В "+len(arr[0])+"-ом столбце максимальный элемент:"+np.min(arr, axis=0))
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
@dmshar
import numpy as np
arr = np.random.randint(230,400, size=[3, 3])
for i in range(arr.shape[1]):
    print("В "+str(i)+"-ом столбце максимальный элемент:",  arr.max(axis=0)[i])


Или так:
for i in range(arr.shape[1]):
    print("В "+str(i)+"-ом столбце максимальный элемент:",  arr[:,i].max())


Массив:
array([[263, 333, 334],
       [278, 383, 307],
       [328, 255, 314]])


Результат в обоих случаях одинаков:
В 0-ом столбце максимальный элемент: 328
В 1-ом столбце максимальный элемент: 383
В 2-ом столбце максимальный элемент: 334
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Исключительно в качестве учебной иллюстрации применения apply_along_axis:
import numpy as np
from itertools import count

def print_max_element(sequence, counter=count(0)):
    print(f'Максимальный элемент в {next(counter)}-м столбце: {sequence.max()}')

np.apply_along_axis(print_max_element, 0, arr)

В реальном коде задание параметра counter=count(0) в таком виде использовать не следует по очевидной причине.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы