Поиск минимального элемента матрицы питон

Индексы минимальных элементов матрицы

Вывести на экран индексы всех минимальных элементов матрицы.

Эта задача отличается от поиска минимума тем, что нужно найти и вывести на экран не само минимальное значение, а его индексы (позицию, положение в матрице). Кроме того, минимальных (но равных между собой) значений в массиве может быть несколько. Следовательно, разумно вывести индексы всех минимальных элементов.

Задача складывается из двух подзадач, которые должны быть решены последовательно:

  1. Поиск минимума в массиве (в данном случае двумерном).
  2. Поиск элементов, равных ранее найденному минимуму.

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

Алгоритм поиска минимального значения:

  1. Присвоить minimum максимально возможное (или больше) значение для исследуемого массива.
  2. Перебрать элементы матрицы (используя конструкцию вложенного цикла). Каждый элемент сравнивать со значением minimum. Если очередной элемент меньше значения minimuma, то следует присвоить значение текущего элемента переменной minimum.

Алгоритм определения позиций всех минимальных элементов матрицы:

  1. Снова перебираем элементы матрицы.
  2. Сравниваем каждый элемент со значением minimum.
  3. Если они равны между собой, то выводим индексы текущего элемента на экран. (Индексы текущего элемента — это значения счетчиков первого и второго циклов.)
  • Ниже в решениях задачи поиска индексов минимальных элементов на языках программирования поиск минимального значения выполняется в том же цикле, что и заполнение матрицы.
  • Если индексация массива начинается с нуля, то лучше при выводе индексов увеличивать их на единицу. Так будет более ясно, где находится элемент.

Pascal

 
const N = 5; M = 7;
var
mx: array[1..N,1..M] of integer;
min: integer;
i, j: byte;
begin
min := MAXINT;
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
mx[i,j] := random(50) - 25;
write(mx[i,j]:4);
if mx[i,j] < min then min:=mx[i,j];
end;
writeln;
end;
writeln('Минимальное значение: ', min);
for i:=1 to N do
for j:=1 to M do
if mx[i,j] = min then
writeln('строка: ', i, '; столбец: ', j);
end.
 

-19 6 3 18 -12 -3 24
-4 15 -6 19 -15 -1 4
6 -9 -12 23 -3 3 -11
5 0 -11 -4 -19 -6 1
17 20 -1 6 17 -1 15
Минимальное значение: -19
строка: 1; столбец: 1
строка: 4; столбец: 5

Язык Си

 
#include < stdio.h>
#define M 7
#define N 5
main() int a[N][M];
int min, i, j;
srand(time(NULL));
min = 25;
for (i=0; i < N; i++) for (j=0; j < M; j++) a[i][j] = rand() % 50 - 25;
printf("%5d", a[i][j]);
if (min > a[i][j]) min = a[i][j];
>
printf("\n");
>
printf("%d\n", min);
for (i=0; i < N; i++) for (j=0; j < M; j++) if (min == a[i][j])
printf("row: %d, col: %d\n", i+1, j+1);
>
>
>

Python

 
from random import random
M = 7
N = 5
a = []
for i in range(N):
b = []
for j in range(M):
b.append(int(random()*50) - 25)
print("%4d" % b[j], end='')
a.append(b)
print()
min_mx = 25
for i in range(N):
min_i = min(a[i])
if min_i < min_mx:
min_mx = min_i
print(min_mx)
for i in range(N):
for j in range(M):
if min_mx == a[i][j]:
print('Row: %d, col: %d' % (i+1,j+1))
 

Пример выполнения:

-18 -23 -8 17 12 4 -22
16 -10 -18 6 -9 19 23
8 -1 -7 0 -9 24 -12
-5 16 14 -2 1 7 -16
-7 5 1 -23 -4 -4 17
-23
Row: 1, col: 2
Row: 5, col: 4

В языке Python есть встроенная функция min, которая возвращает минимальный элемент одномерного списка. Если же ее применить к двумерному списку, то она возвращает вложенный список, первый элемент которого оказывается минимальным.

Читайте также:  Питон заставка на телефон

Поэтому в коде поиска минимального элемента матрицы эта функция используется к каждой строке (вложенному списку) отдельно.

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

Классический вариант поиска минимального значения матрицы выглядел бы так:

. min_mx = 25 for i in range(N): for j in range(M): if a[i][j]

Источник

Найдите максимальный и минимальный элементы матрицы

Поменять местами максимальный и минимальный элементы матрицы
ввести с клавиатуры массив, состоящий из n строк и m столбцов. Создать библиотеку, в которой.

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их
Дана матрица B. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с.

Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы
Дана матрица размера M х N. Поменять местами столбцы, содержащие минимальный и максимальный.

Поменять местами строки, содержащие минимальный и максимальный элементы матрицы
Добрый день! Ранее обращался по данному вопросу, но была другая "специфика" Необходимо.

Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы
Дана матрица B. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с.

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

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)

Определить максимальный и минимальный элементы матрицы
Здравствуйте. Помогите пожалуйста с решением Дана матрица N (4×10), определить максимальный и.

Поменять местами столбики, содержащие минимальный и максимальный элементы матрицы
Дана матрица размера 5 x 10. Поменять местами столбики, содержащие минимальный и максимальный.

Найдите в каждой строке матрицы максимальный и минимальный элементы и поменяйте их местами
найдите в каждой строке матрицы максимальный и минимальный элементы и поменяйте их.

Найдите минимальный и максимальный элементы
В массиве F(9) найдите минимальный и максимальный элементы, их порядковые номера и разницу между.

Найдите максимальный и минимальный элементы массива
Найдите максимальный и минимальный элементы массива из 10 случайных целых двухзначныых чисел и.

Источник

Как работать с матрицами в Python

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

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

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

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

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

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

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

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

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

Создание

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

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

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

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

Обратите внимание, что если изменить 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)

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

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

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

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)

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

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

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

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

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

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

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

Как она получилась? Разберём число 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)

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

Чтобы получить обратную матрицу, необходимо использовать модуль 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. Она позволяет производить сложные математические вычисления легко и без ошибок, избавляя программиста от необходимости каждый раз писать один и тот же код.

Источник

Оцените статью