Узнать размер матрицы python

Работа с Matrix в Python

Для работы с Matrix Python нам необходимо импортировать модуль numpy. Матрица используется для операций с матрицей, которая может использоваться для научных целей, обработки изображений и т.д.

Как создать матрицу?

Согласно Википедии, матрица – это прямоугольный массив чисел, символов или выражений, упорядоченный по строкам и столбцам. Итак, в следующем коде мы будем инициализировать различные типы матриц.

Обычно матрица создается с помощью функции numpy.matix(). Мы можем использовать numpy.shape, чтобы узнать размер матрицы. Смотрите следующий пример кода матрицы.

import numpy as np # create 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array print('2x2 matrix is:\n', a) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', a.shape) # using MatLab syntax in string b = np.matrix('[1,2;3,4;5,6]', dtype=np.int32) # limiting the data-type to int print('\n3x2 matrix is:\n', b) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', b.shape) # using numpy.random.rand(row, column) to generate array of random element c = np.matrix(np.random.rand(3, 3), dtype=np.float32) # considering the data-type as float print('\n3x3 random element matrix is:\n', c) # using shape attribute to get the tuple describing matrix shape print('The dimension of the matrix is :', c.shape)

Вы получите результат, как на следующем изображении.

Matrix в python

Добавление матрицы

Код для сложения матриц достаточно сложен для написания вручную. Благодаря модулю numpy мы можем просто использовать оператор + для добавления матрицы. Итак, в следующем примере кода мы увидим, как писать код сложения вручную, а также с помощью оператора +.

import numpy as np # create two 2x2 matrix a = np.matrix([[1, 2], [3, 4]]) # using array of array b = np.matrix([[5, 6], [7, 8]]) # using array of array result = np.matrix(np.zeros((2,2))) # result matrix print('A matrix :\n', a) print('\nB matrix :\n', b) # traditional code for i in range(a.shape[1]): for j in range(a.shape[0]): result[i, j] = a[i, j] + b[i, j] print('\nManually calculated result :\n', result) # get the result by simply using + operator resultB = a + b print('\nCalculated using matrix + operator :\n', resultB)
A matrix : [[1 2] [3 4]] B matrix : [[5 6] [7 8]] Manually calculated result : [[ 6. 8.] [ 10. 12.]] Calculated using matrix + operator : [[ 6 8] [10 12]]

Умножение и транспонирование матриц, обратная матрица

В предыдущем разделе мы обсудили преимущество Python Matrix в том, что он просто упрощает для нас задачу. Таким образом, мы можем просто умножить две матрицы, получить инверсию и транспонирование матрицы.

Читайте также:  Как убрать рамку у input css

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

Мы можем получить инверсию матрицы, используя функцию getI() и использовать getT() для транспонирования матрицы. Давайте посмотрим на пример:

import numpy as np # initialize a 3x2 matrix of random values matA = np.matrix(np.random.rand(3, 2)) # print the first matrix print('The first matrix is :\n', matA) # initialize a 2x3 matrix of random values matB = np.matrix(np.random.rand(2, 3)) # print the second matrix print('\nThe second matrix is :\n', matB) # multiply two matrix using * operator result = matA * matB # print the resultant matrix print('\nMatrix multiplication result :\n', result) # get the inverse of the first matrix inverseMatA = matA.getI() print('\nThe inverse of the first matrix is :\n', inverseMatA) # get the transpose matrix of the second matrix transposeMatB = matB.getT() print('\nThe transpose of the second matrix is :\n', transposeMatB)

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

The first matrix is : [[ 0.88847844 0.01832413] [ 0.08538396 0.20208474] [ 0.92615527 0.8963927 ]] The second matrix is : [[ 0.03454971 0.89908281 0.08825769] [ 0.46224998 0.63173062 0.91734146]] Matrix multiplication result : [[ 0.039167 0.81039161 0.09522454] [ 0.09636365 0.20443036 0.1929165 ] [ 0.44635589 1.398969 0.90403851]] The inverse of the first matrix is : [[ 1.12771189 -0.15722127 0.01239153] [-1.13143853 0.40000541 1.04853336]] The transpose of the second matrix is : [[ 0.03454971 0.46224998] [ 0.89908281 0.63173062] [ 0.08825769 0.91734146]]

Источник

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

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

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

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

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

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

Читайте также:  Javascript onclick href blank

Подключение библиотеки 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 для их сложения используется обычный оператор «+».

Читайте также:  Html тег meta description

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

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

Источник

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