Как найти минимальный элемент матрицы питон

I have this code wrote in python 3:

matrix = []
    loop = True
    while loop:
        line = input()
        if not line: 
            loop = False
        values = line.split()
        row = [int(value) for value in values]
        matrix.append(row)

    print('n'.join([' '.join(map(str, row)) for row in matrix]))
    print('matrix saved')

an example of returned matrix would be [[1,2,4],[8,9,0]].Im wondering of how I could find the maximum and minimum value of a matrix? I tried the max(matrix) and min(matrix) built-in function of python but it doesnt work.

Thanks for your help!

asked Apr 30, 2014 at 23:27

Jon_Computer's user avatar

2

One-liner:

for max:

matrix = [[1, 2, 4], [8, 9, 0]]
print (max(map(max, matrix))
9

for min:

print (min(map(min, matrix))
0

answered Feb 10, 2020 at 5:00

eugen's user avatar

eugeneugen

1,2199 silver badges15 bronze badges

If you don’t want to use new data structures and are looking for the smallest amount of code possible:

max_value = max([max(l) for l in matrix])
min_value = min([min(l) for l in matrix])

If you don’t want to go through the matrix twice:

max_value = max(matrix[0])
min_value = min(matrix[0])

for row in matrix[1:]:
    max_value = max(max_value, max(row))
    min_value = min(min_value, min(row))

answered Dec 10, 2019 at 10:01

AdelaN's user avatar

AdelaNAdelaN

3,3062 gold badges24 silver badges44 bronze badges

Use the built-in functions max() and min() after stripping the list of lists:

matrix = [[1, 2, 4], [8, 9, 0]]
dup = []
for k in matrix:
    for i in k:
        dup.append(i)

print (max(dup), min(dup))

This runs as:

>>> matrix = [[1, 2, 4], [8, 9, 0]]
>>> dup = []
>>> for k in matrix:
...     for i in k:
...         dup.append(i)
... 
>>> print (max(dup), min(dup))
(9, 0)
>>> 

answered Apr 30, 2014 at 23:52

A.J. Uppal's user avatar

A.J. UppalA.J. Uppal

19k6 gold badges45 silver badges76 bronze badges

0

If you are going with the solution of flattening matrix in an array, instead of inner loop you can just use extend:

big_array = []

for arr in matrix:
   big_array.extend(arr)

print(min(big_array), max(big_array))

answered Oct 13, 2019 at 17:45

Serjik's user avatar

SerjikSerjik

10.4k7 gold badges61 silver badges70 bronze badges

Try

largest = 0
smallest = 0
count = 0
for i in matrix:
    for j in i:
        if count == 0:
            largest = j
            smallest = j
            count = 1
        if j > largest:
            largest = j
        if j < smallest:
            smallest = j

UPDATE

For splitting

largest = 0
count = 0
for i in matrix:
    for j in i:
        if count == 0:
            largest = j
        if j > largest:
            largest = j

and do the same thing for smallest

answered Apr 30, 2014 at 23:37

Newyork167's user avatar

Newyork167Newyork167

4945 silver badges9 bronze badges

3

here is what i came up with

M = [[1,2,4],[8,9,0]]

def getMinMax( M ):
    maxVal = 0
    for row in M:
        if max(row) > maxVal: maxVal = max(row)
    minVal = maxVal*1
    for row in M:
        if min(row) < minVal: minVal = min(row)

    return ( minVal,  maxVal )

getMinMax( M )
// Result: (0, 9) //

answered May 1, 2014 at 0:04

mr.matt's user avatar

You could first decide to flatten this matrix and then find the corresponding maximum and minimum values as indicated below
Convert the matrix to a numpy array

import numpy as np
matrix = np.array([[1, 2, 4], [8, 9, 0]])
mat_flattened = matrix.flatten()
min_val = min(mat_flattened)
max_val = max(mat_flattened)

0

Матрица — это двумерный массив, состоящий из M строк и N столбцов. Матрицы часто используются в математических вычислениях. Программисты работают с матрицами в основном в научной области, однако их можно использовать и для других вещей, например, для быстрой генерации уровней в видео-игре.

Матрицы и библиотека NumPy

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

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

Вместо того чтобы писать десятки строк кода для выполнения простых операций над матрицами, программист может использовать одну функцию из NumPy. Библиотека написана на Python, C и Фортране, поэтому функции работают даже быстрее, чем на чистом Python.

Подключение библиотеки NumPy

NumPy не встроена в интерпретатор Python, поэтому перед импортом её необходимо установить. Для этого в можно воспользоваться утилитой pip. Введите в консоле команду:

pip install numpy

Теперь, когда библиотека установлена, её можно подключить с помощью команды import. Для удобства переименуем numpy при импорте в np следующим образом:

import numpy as np

Ниже в примерах будет использован именно такой импорт, поэтому обращение к библиотеке будет через np, а не numpy!

Создание

Для создании матрицы используется функция array(). В функцию передаётся список. Вот пример создания, мы подаём в качестве аргумента функции двумерный список:

a = np.array([[3, 3, 3], [2, 5, 5]])

Вторым параметром можно задать тип элементов матрицы:

a = np.array([[3, 3, 3],[2, 5, 5]], int)
print(a)

Тогда в консоль выведется:

[[3 3 3]
 [2 5 5]]

Обратите внимание, что если изменить int на str, то тип элементов изменился на строковый. Кроме того, при выводе в консоль NumPy автоматически отформатировал вывод, чтобы он выглядел как матрица, а элементы располагались друг под другом.

В качестве типов элементов можно использовать int, float, bool, complex, bytes, str, buffers. Также можно использовать и другие типы NumPy: логические, целочисленные, беззнаковые целочисленные, вещественные, комплексные. Вот несколько примеров:

  • np.bool8 — логическая переменная, которая занимает 1 байт памяти.
  • np.int64 — целое число, занимающее 8 байт.
  • np.uint16 — беззнаковое целое число, занимающее 2 байта в памяти.
  • np.float32 — вещественное число, занимающее 4 байта в памяти.
  • np.complex64 — комплексное число, состоящее из 4 байтового вещественного числа действительной части и 4 байтов мнимой.

Вы также можете узнать размер матрицы, для этого используйте атрибут shape:

size = a.shape
print(size) # Выведет (2, 3)

Первое число (2) — количество строк, второе число (3) — количество столбцов.

Нулевая матрица

Если необходимо создать матрицу, состоящую только из нулей, используйте функцию zeros():

a_of_zeros = np.zeros((2,2))
print(a_of_zeros)

Результат этого кода будет следующий:

[[0. 0.]
 [0. 0.]]

Получение строки, столбца и элемента

Чтобы получить строку двухмерной матрицы, нужно просто обратиться к ней по индексу следующим образом:

temp = a[0]
print(temp) #Выведет [3 3 3]

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

arr = np.array([[3,3,3],[2,5,5]], str)
temp = arr[:,2]
print(temp) # Выведет ['3' '5']

Чтобы получить элемент, нужно указать номер столбца и строки, в которых он находится. Например, элемент во 2 строке и 3 столбце — это 5, проверяем (помним, что нумерация начинается с 0):

arr = np.array([[3,3,3],[2,5,5]], str)
temp = arr[1][2]
print(temp) # Выведет 5

Умножение и сложение

Чтобы сложить матрицы, нужно сложить все их соответствующие элементы. В Python для их сложения используется обычный оператор «+».

Пример сложения:

arr1 = np.array([[3,3,3],[2,5,5]])
arr2 = np.array([[2,4,2],[1,3,8]])
temp = arr1 + arr2
print(temp)

Результирующая матрица будет равна:

[[ 5  7  5]
 [ 3  8 13]]

Важно помнить, что складывать можно только матрицы с одинаковым количеством строк и столбцов, иначе программа на Python завершится с исключением ValueError.

Умножение матриц сильно отличается от сложения. Не получится просто перемножить соответствующие элементы двух матриц. Во-первых, матрицы должны быть согласованными, то есть количество столбцов одной должно быть равно количеству строк другой и наоборот, иначе программа вызовет ошибку.

Умножение в NumPy выполняется с помощью метода dot().

Пример умножения:

arr1 = np.array([[3,3],[2,5]])
arr2 = np.array([[2,4],[1,3]])
temp = arr1.dot(arr2)
print(temp)

Результат выполнения этого кода будет следующий:

[[ 9 21]
 [ 9 23]]

Как она получилась? Разберём число 21, его позиция это 1 строка и 2 столбец, тогда мы берем 1 строку первой матрицы и умножаем на 2 столбец второй. Причём элементы умножаются позиционно, то есть 1 на 1 и 2 на 2, а результаты складываются: [3,3] * [4,3] = 3 * 4 + 3 * 3 = 21.

Транспонированная и обратная

Транспонированная матрица — это матрица, у которой строки и столбцы поменялись местами. В библиотеки NumPy для транспонирования двумерных матриц используется метод transpose(). Пример:

arr1 = np.array([[3,3],[2,5]])
temp = arr1.transpose()
print(temp)

В результате получится матрица:

[[3 2]
 [3 5]]

Чтобы получить обратную матрицу, необходимо использовать модуль linalg (линейная алгебра). Используем функцию inv():

arr1 = np.array([[3,3],[2,5]])
temp = np.linalg.inv(arr1)
print(temp)

Результирующая матрица будет равна:

[[ 0.55555556 -0.33333333]
 [-0.22222222  0.33333333]]

Получение максимального и минимального элемента

Чтобы получить максимальный или минимальный элемент, можно пройтись по всем элементам матрицы с помощью двух циклов for. Это стандартный алгоритм перебора, который известен почти каждому программисту:

arr = np.array([[3,3],[2,5]])
min = arr[0][0]
for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        if min > arr[i][j]:
            min = arr[i][j]
print("Минимальный элемент:", min) # Выведет "Минимальный элемент: 2"

NumPy позволяет найти максимальный и минимальный элемент с помощью функций amax() и amin(). В качестве аргумента в функции нужно передать саму матрицу. Пример:

arr1 = np.array([[3,3],[2,5]])
min = np.amin(arr1)
max = np.amax(arr1)
print("Минимальный элемент:", min) # Выведет "Минимальный элемент: 2"
print("Максимальный элемент:", max) # Выведет "Максимальный элемент: 5"

Как видим, результаты реализации на чистом Python и реализации с использованием библиотеки NumPy совпадают.

Заключение

На Python можно реализовать все необходимые функции для работы с матрицами. Чтобы упростить работу программистов, была создана библиотека NumPy. Она позволяет производить сложные математические вычисления легко и без ошибок, избавляя программиста от необходимости каждый раз писать один и тот же код.

Все нормально Выводит. Просто диапазон чисел 1-9 маленький, и большая вероятность что в матрице будут числа 1 и 9.
Возьмите больше диапазон чисел и результат будет чаще уже другой. Или берите ранг матрицы равным 3, тогда вероятность что выведет другие значения , будет выше.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
N=int(input("Введите размер матрицы:"))
arr=[[random.randint(1,9) for i in range(N)] for j in range(N)]
min = arr[0][0]
max = 0
for i in range(N):
    for j in range(N):
        if(arr[i][j]<min):
            min=arr[i][j]
        elif(arr[i][j]>max):
            max=arr[i][j]
for i in range(N):
    print(arr[i])
print(max, min)

Пример
Введите размер матрицы:3
[8, 4, 2]
[6, 3, 7]
[7, 2, 1]
8 1

i dont know how to find the index of minimum value in matrix, can you help me? i didnt find anythin on the internet about this

def printMatrix(matrix):
    for i in matrix:
       for j in i:
          print(j, end=' ')
       print()



m=[ [1, 1, 2, 5, 6, 1] , [5, 6, 8, 5, 6, 7] , [10, 12, 10, 12, 11, 11] , [8, 10, 5, 6, 8, 9] , [6, 5, 10, 12, 15, 19]]


printMatrix(m)

На уроке рассматриваются алгоритмы работы с двумерными массивами в Python: создание матрицы, инициализация элементов, вывод, обработка элементов матрицы

Создание, вывод и ввод матрицы в Питоне

    Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.

  • Таким образом, получается структура из вложенных списков, количество которых определяет количество строк матрицы, а число элементов внутри каждого вложенного списка указывает на количество столбцов в исходной матрице.
  • Рассмотрим пример матрицы размера 4 х 3:

    matrix = [[-1, 0, 1], 
        [-1, 0, 1], 
        [0, 1, -1],
        [1, 1, -1]]

    Данный оператор можно записать в одну строку:

    matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
  • Вывод матрицы можно осуществить одним оператором, но такой простой способ не позволяет выполнять какой-то предварительной обработки элементов:

Результат:
 

вывод матрицы

  • Для вывода матрицы в виде таблицы можно использовать специально заготовленную для этого процедуру:
    1. способ:
    2. 1
      2
      3
      4
      5
      
      def printMatrix ( matrix ): 
         for i in range ( len(matrix) ): 
            for j in range ( len(matrix[i]) ): 
                print ( "{:4d}".format(matrix[i][j]), end = "" ) 
            print ()

      В примере i – это номер строки, а j – номер столбца;
      len(matrix) – число строк в матрице.

    3. способ:
    4. 1
      2
      3
      4
      5
      
      def printMatrix ( matrix ): 
         for row in matrix: 
            for x in row: 
                print ( "{:4d}".format(x), end = "" ) 
            print ()

      Внешний цикл проходит по строкам матрицы (row), а внутренний цикл проходит по элементам каждой строки (x).

  • Для инициализации элементов матрицы случайными числами используется алгоритм:
  • 1
    2
    3
    4
    
    from random import randint
    n, m = 3, 3
    a = [[randint(1, 10) for j in range(m)] for i in range(n)]
    print(a)

    Обработка элементов двумерного массива

    Нумерация элементов двумерного массива, как и элементов одномерного массива, начинается с нуля.
    Т.е. matrix[2][3] — это элемент третьей строки четвертого столбца.

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

    ✍ Решение:
     

    1
    2
    3
    4
    5
    
    p = 1 
    for i in range(N): 
        for j in range(M): 
           p *= matrix[i][j] 
    print (p)

    Пример:
    Найти сумму элементов двумерного массива.

    ✍ Решение:
     

    Более подходящий вариант для Python:

    1
    2
    3
    4
    
    s = 0 
    for row in matrix: 
       s += sum(row) 
    print (s)

    Для поиска суммы существует стандартная функция sum.

    Задание Python 8_0:
    Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:

    Номер станции 1-й день 2-й день 3-й день 4-й день
    1 -8 -14 -19 -18
    2 25 28 26 20
    3 11 18 20 25

    Т.е. запись показаний в двумерном массиве выглядела бы так:

    t[0][0]=-8 t[0][1]=-14 t[0][2]=-19 t[0][3]=-18
    t[1][0]=25 t[1][1]=28 t[1][2]=26 t[1][3]=20
    t[2][0]=11 t[2][1]=18 t[2][2]=20 t[2][3]=25
    1. Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
    2. Распечатать показания термометров всех метеостанций за 2-й день.
    3. Определить среднюю температуру на 3-й метеостанции.
    4. Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.

    Задание Python 8_1:
    Написать программу поиска минимального и максимального элементов матрицы и их индексов.

    Задание Python 8_2:
    Написать программу, выводящую на экран строку матрицы, сумма элементов которой максимальна.

  • Для обработки элементов квадратной матрицы (размером N x N):
  • Для элементов главной диагонали достаточно использовать один цикл:
  • for i in range(N): 
       # работаем с matrix[i][i]
  • Для элементов побочной диагонали:
  • for i in range(N): 
       # работаем с matrix[i][N-1-i]

    Пример:Переставить 2-й и 4-й столбцы матрицы. Использовать два способа.

    ✍ Решение:
     

    1. for i in range(N): 
        c = A[i][2] 
        A[i][2] = A[i][4] 
        A[i][4] = c
    2. for i in range(N): 
        A[i][2], A[i][4] = A[i][4], A[i][2]

    Задание Python 8_3:
    Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:

  • минимальный элемент, лежащий ниже побочной диагонали;
  • произведение ненулевых элементов последней строки.
  • Понравилась статья? Поделить с друзьями:

    Не пропустите также:

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

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии