Линейная алгебра на Python. [Урок 1]. Задание Матрицы.

Эта статья открывает список уроков на тему “Линейная алгебра с примерами на Python. Мы постараемся рассказать о базовых понятиях  линейной алгебры, которые могут быть полезны тем, кто занимается машинным обучением и анализом данных, и будем сопровождать все это примерами на языке Python.

  • Матрицы
    • Виды матриц и способы их создания в Python
    • Вектор
      • Вектор-строка
      • Вектор-столбец
    • Квадратная матрица
    • Диагональная матрица
    • Единичная матрица
    • Нулевая матрица
    • Задание матрицы в общем виде

Матрицы

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

\(M\;=\;\begin{pmatrix}1&3&5\\7&2&4\end{pmatrix}\)

В общем виде матрица записывается так:

\(M=\begin{pmatrix}a_{11}&a_{12}&…&a_{1n}\\a_{21}&a_{22}&…&a_{2n}\\…&…&…&…\\a_{m1}&a_{m2}&…&a_{mn}\end{pmatrix}\)

Представленная выше матрица состоит из i-строк и j-столбцов. Каждый ее элемент имеет соответствующее позиционное обозначение, определяемое номером строки и столбца на пересечении которых он расположен: \(a_{ij}\)- находится на i-ой строке и j-м столбце.

Важным элементом матрицы является главная диагональ, ее составляют элементы, у которых совпадают номера строк и столбцов.

Виды матриц и способы их создания в Python

Матрица в Python – это двумерный массив, поэтому задание матриц того или иного вида предполагает создание соответствующего массива. Для работы с массивами в Python используется тип данных список (англ. list). Но с точки зрения представления матриц и проведения вычислений с ними списки – не очень удобный инструмент, для этих целей хорошо подходит библиотека Numpy, ее мы и будем использовать в дальнейшей работе.

Напомним, для того, чтобы использовать библиотеку Numpy ее нужно предварительно установить, после этого можно импортировать в свой проект. По установке Numpy можно подробно прочитать в разделе “Установка библиотеки Numpy” из введения. Для того чтобы импортировать данный модуль, добавьте в самое начало программы следующую строку

import numpy as np

Если после импорта не было сообщений об ошибке, то значит все прошло удачно и можно начинать работу. Numpy содержит большое количество функций для работы с матрицами, которые мы будем активно использовать. Обязательно убедитесь в том, что библиотека установлена и импортируется в проект без ошибок.

Рассмотрим, различные варианты матриц и способы их задания в Python.

Вектор

Вектором называется матрица, у которой есть только один столбец или одна строка. Более подробно свойства векторов, их геометрическая интерпретация и операции над ними будут рассмотрены в “Главе 2 Векторная алгебра”.

Вектор-строка

Вектор-строка имеет следующую математическую запись.

\(v=(1\;2)\)

Такой вектор в Python можно задать следующим образом.

>>> v_hor_np = np.array([1, 2])
>>> print(v_hor_np )
[1 2]

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

Создадим нулевую вектор-строку размера 5.

>>> v_hor_zeros_v1 = np.zeros((5,))
>>> print(v_hor_zeros_v1 )
[0. 0. 0. 0. 0.]

В случае, если требуется построить вектор-строку так, чтобы она сама являлась элементом какого-то массива, это нужно для возможности транспонирования матрицы (см. раздел “1.3 Транспонирование матрицы”), то данную задачу можно решить так.

>>> v_hor_zeros_v2 = np.zeros((1, 5))
>>> print(v_hor_zeros_v2 )
[[0.  0. 0. 0. 0.]]

Построим единичную вектор-строку в обоих из представленных для нулевого вектора-строки форм.

>>> v_hor_one_v1 = np.ones((5,))
>>> print(v_hor_one_v1)
[1. 1. 1. 1. 1.]
>>> v_hor_one_v2 = np.ones((1, 5))
>>> print(v_hor_one_v2)
[[1. 1. 1. 1. 1.]]

Вектор-столбец

Вектор-столбец имеет следующую математическую запись.

\(v=\begin{pmatrix}1\\2\end{pmatrix}\)

В общем виде вектор столбец можно задать следующим образом.

>>> v_vert_np = np.array([[1], [2]])
>>> print(v_vert_np)
[[1]
[2]]

Рассмотрим способы создания нулевых и единичных векторов-столбцов. Построим нулевой вектор-столбец.

>>> v_vert_zeros = np.zeros((5, 1))
>>> print(v_vert_zeros)
[[0. ]
[0.]
[0.]
[0.]
[0.]]

Единичный вектор-столбец можно создать с помощью функции ones().

>>> v_vert_ones = np.ones((5, 1)) >>> print(v_vert_ones) [[1.] [1.] [1.] [1.] [1.]]

Квадратная матрица

Довольно часто, на практике, приходится работать с квадратными матрицами. Квадратной называется матрица, у которой количество столбцов и строк совпадает. В общем виде они выглядят так.

\(Msqr=\begin{pmatrix}a_{11}&a_{12}&…&a_{1n}\\a_{21}&a_{22}&…&a_{2n}\\…&…&…&…\\a_{n1}&a_{n2}&…&a_{nn}\end{pmatrix}\)

Создадим следующую матрицу.

\(Msqr=\begin{pmatrix}1&2&3\\4&5&6\\7&8&9\end{pmatrix}\)

В Numpy можно создать квадратную матрицу с помощью метода

array().

>>> m_sqr_arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> print(m_sqr_arr)
[[1 2 3]
[4 5 6]
[7 8 9]]

Как вы уже наверное заметили, аргументом функции np. array() является список Python, его можно создать отдельно и передать в функцию.

>>> m_sqr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> m_sqr_arr = np.array(m_sqr)
>>> print(m_sqr_arr)
[[1 2 3]
[4 5 6]
[7 8 9]]

Но в Numpy

есть еще одни способ создания матриц – это построение объекта типа matrix с помощью одноименного метода. Задать матрицу можно в виде списка.

>>> m_sqr_mx = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> print(m_sqr_mx)
[[1 2 3]
[4 5 6]
[7 8 9]]

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

>>> m_sqr_mx = np.matrix('1 2 3; 4 5 6; 7 8 9')
>>> print(m_sqr_mx)
[[1 2 3]
[4 5 6]
[7 8 9]]

Диагональная матрица

Особым видом квадратной матрицы является

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

\(Mdiag=\begin{pmatrix}a_{11}&0&…&0\\0&a_{22}&…&0\\…&…&…&…\\0&0&…&a_{nn}\end{pmatrix}\)

Диагональную матрицу можно построить вручную, задав только значения элементам на главной диагонали.

>>> m_diag = [[1, 0, 0], [0, 5, 0], [0, 0, 9]]
>>> m_diag_np = np.matrix(m_diag)
>>> print(m_diag_np)
[[1 0 0]
[0 5 0]
[0 0 9]]

Библиотека Numpy предоставляет инструменты, которые могут упростить построение такой матрицы.

Первый вариант подойдет в том случае, если у вас уже есть матрица, и вы хотите сделать из нее диагональную. Создадим матрицу размера 3 3.

>>> m_sqr_mx = np.matrix('1 2 3; 4 5 6; 7 8 9')

Извлечем ее главную диагональ.

>>> diag = np.diag(m_sqr_mx)
>>> print(diag)
[1 5 9]

Построим диагональную матрицу на базе полученной диагонали.

>>> m_diag_np = np.diag(np.diag(m_sqr_mx))
>>> print(m_diag_np)
[[1 0 0]
[0 5 0]
[0 0 9]]

Второй вариант подразумевает построение единичной матрицы, ей будет посвящен следующий параграф.

Единичная матрица

Единичной матрицей называют такую квадратную матрицу, у которой элементы главной диагонали равны единицы, а все остальные нулю.

\(E=\begin{pmatrix}1&0&…&0\\0&1&…&0\\…&…&…&…\\0&0&…&1\end{pmatrix}\)

Создадим единичную матрицу на базе списка, который передадим в качестве аргумента функции matrix().

>>> m_e = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
>>> m_e_np = np.matrix(m_e)
>>> print(m_e_np)
[[1 0 0]
[0 1 0]
[0 0 1]]

Такой способ не очень удобен, к счастью для нас, для построения такого типа матриц в библиотеке Numpy есть специальная функция – eye().

>>> m_eye = np.eye(3)
>>> print(m_eye)
[[ 1.  0. 0.]
[ 0.  1. 0.]
[ 0.  0. 1.]]


В качестве аргумента функции передается размерность матрицы, в нашем примере – это матрица 3 3. Тот же результат можно получить с помощью функции identity()

.

>>> m_idnt = np.identity(3)
>>> print(m_idnt)
[[ 1.  0. 0.]
[ 0.  1. 0.]
[ 0.  0. 1.]]

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

У нулевой матрицы все элементы равны нулю.

\(Z=\begin{pmatrix}0&0&…&0\\0&0&…&0\\…&…&…&…\\0&0&…&0\end{pmatrix}\)

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

>>> m_zeros = np.
zeros((3, 3)) >>> print(m_zeros) [[ 0. 0. 0.] [ 0. 0. 0.] [ 0. 0. 0.]]

В качестве параметра функции zeros() передается размерность требуемой матрицы в виде кортежа из двух элементов, первый из которых – число строк, второй – столбцов. Если функции zeros() передать в качестве аргумента число, то будет построен нулевой вектор-строка, это мы делали в параграфе, посвященном векторам.

Задание матрицы в общем виде

Если у вас уже есть данные о содержимом матрицы, то создать ее можно используя списки Python или функцию matrix() из библиотеки Numpy.

>>> m_mx = np.matrix('1 2 3; 4 5 6')
>>> print(m_mx)
[[1 2 3]
[4 5 6]]

Если же вы хотите создать матрицу заданного размера с произвольным содержимым, чтобы потом ее заполнить, проще всего для того использовать функцию zeros(), которая создаст матрицу заданного размера, заполненную нулями.

>>> m_var = np.zeros((2, 5))
>>> print(m_var)
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта. Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas.  Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

#3. Функции автозаполнения, создания матриц и числовых диапазонов

  • NumPy
  • Установка и первое знакомство
  • Основные типы данных. Создание массивов функцией array()
  • Функции автозаполнения, создания матриц и числовых диапазонов
  • Свойства и представления массивов, создание их копий
  • Изменение формы массивов, добавление и удаление осей
  • Объединение и разделение массивов
  • Индексация, срезы, итерирование массивов
  • Базовые математические операции над массивами
  • Булевы операции и функции, значения inf и nan
  • Базовые математические функции
  • Произведение матриц и векторов, элементы линейной алгебры
  • Множества (unique) и операции над ними
  • Транслирование массивов
  • Обучающие курсы

    Python Python ООП Структуры данных

    Телеграм-каналы

    Канал selfedu_rus Python Django Машинное обучение Java и С++

    Наш канал

Смотреть материал на видео

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

np.array( [0]*10 )  # массив из 10 нулей
np.array( [1]*15 )  # массив из 15 единиц
np.array( [x for x in range(10)] ) # массив из чисел от 0  до 9

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

Функции автозаполнения элементов массива

Название

Описание

empty(shape, …)

Возвращает новый массив заданного размера и типа данных, но без определенных значений.

eye(N, M=None, …)

Возвращает массив размером NxMс единичными диагональными элементами (остальные элементы равны нулю).

identity(n, …)

Возвращает квадратный массив размерностью nxn с единичными элементами по главной диагонали (остальные равны нулю).

ones(shape, …)

Возвращает массив заданного размера и типа, состоящего из всех единиц.

zeros(shape, …)

Возвращает массив заданного размера и типа, состоящего из всех нулей.

full(shape, value, …)

Возвращает массив заданного размера и типа со значениями value.

Это только часть основных функций для создания массивов с заданными значениями. Использовать их достаточно просто. Например, так:

np.empty(10) # создание одномерного массива с произвольными числами
np.empty(10, dtype='int16')
np.empty((3, 2), dtype='float32') # возвращаетматрицу 3x2 стипомfloat32

Для функций eye и identity размерности указываются отдельными параметрами:

np.eye(4)    # матрица 4х4
np.eye(4, 2)         # матрица 4x2
np.identity(5) # матрица 5x5

Функции ones, zeros и full работают по аналогии с функцией empty:

np.zeros( (2, 3, 4) ) # нулевая матрица размерностью 2x3x4
np.ones( [4, 3], dtype='int8') # матрица 4x3 из единиц и типом int8
np.full((3, 2), -1) # матрица 3x2, состоящая из -1

Все эти функции работают быстрее, чем функция array с генератором списков языка Python. Поэтому их предпочтительно использовать при создании и инициализации массивов определенными значениями.

Функции создания матриц

Следующий полезный набор функций позволяет генерировать матрицы на основе списков или по определенным правилам.

Название

Описание

mat(object, …)

Приводит входные данные object к матрице, если это возможно. Параметр object может быть строкой, списком или кортежем.

diag(list, …)

Формирует диагональную матрицу на основе списка или массива NumPy. В последних версиях возвращает копию массива (а не его представление).

diagflat(list, …)

Формирует диагональную матрицу из списка list, который сначала сжимает до одной оси (преобразует в одномерный список или массив).

tri(N, M=None, …)

Создает треугольный массив NxM с единицами на главной диагонали и ниже ее.

tril(list, …)

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

triu(list, …)

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

vander(list, N=None, …)

Создание матрицы Вандермонда из одномерного списка или массива list. Второй параметр N определяет число столбцов (по умолчанию формируется квадратная матрица).

Давайте посмотрим как работают эти функции.

np.mat('1 2 3 4') # создает матрицу 1x4 из строки
np.mat('1, 2, 3, 4') # то же самое: создает матрицу 1x4 из строки
np.mat('1 2; 3 4') # возвращает матрицу 2x2

Или же, вместо строк можно использовать список или кортеж:

np.mat([5, 4, 3])
np.mat( [(1,2,3), (4,5,6)])

Но, если из переданных данных нельзя сформировать прямоугольную таблицу (матрицу), то произойдет ошибка:

np.mat( [(1,2,3), (4,5,6,7)])# ошибка, размерности не совпадают

Следующая функция позволяет формировать диагональные матрицы:

np.diag([1, 2, 3]) # диагональная матрица 3x3

Но, если ей передать двумерный список, то она возвратит одномерный массив из элементов, стоящих на главной диагонали:

np.diag([(1,2,3), (4,5,6), (7,8,9)]) # выделение элементов главной диагонали

Если же мы хотим сформировать диагональную матрицу из многомерных списков или массивов, то следует воспользоваться функцией

np. diagflat([(1,2,3), (4,5,6), (7,8,9)])

Следующий набор функций используются для формирования треугольных матриц. Например:

np.tri(4) # треугольная матрица 4x4
np.tri(4, 2) # треугольная матрица 4x2

Если нужно привести уже существующие матрицы к треугольному виду, то это можно сделать так:

a = np.array( [(1,2,3), (4,5,6), (7,8,9)] )
np.tril(a) # нижняя треугольная матрица размером 3x3
np.triu(a) # верхняя треугольная матрица размером 3x3

Если указать одномерный список:

np.tril([1,2,3])

то будет создана треугольная матрица 3×3 из строк [1, 2, 3].

Также функции tril и triu будут работать и с многомерными массивами:

np.tril([[[1,2,3], [4,5,6], [7,8,9]]])
np.tril([[[1,2,3], [4,5,6], [7,8,9]], [[10,20,30], [40,50,60], [70,80,90]], [[100,200,300], [400,500,600], [700,800,900]]])

В этом случае последние двумерные сечения будут приведены к треугольному виду.

Последняя функция этойгруппы формирует матрицу Вандермонда из одномерных списков или массивов:

np.vander([1,2,3]) # матрица Вандермонда 3x3

Функции формирования числовых диапазонов

Следующая группа функций, которые мы рассмотрим на этом занятии, служит для формирования числовых диапазонов. Что делают эти функции? Когда мы с вами изучали язык Python, то говорили о функции

range(Start, Stop, Step)

которая генерирует числовой диапазон с параметрами Start, Stop, Step. Причем, все эти параметры должны быть целочисленными. В NumPy есть подобные функции, но более гибкие и работающие с вещественными величинами.

Название

Описание

arange()

Возвращает одномерный массив с равномерно разнесенными числами указанного диапазона.

linspace(start, stop, …)

Возвращает одномерный массивcравномерно разнесенными числами, используя только значения начала и конца интервала.

logspace(start, stop, …)

Возвращает одномерный массив с числами, равномерно распределенных по логарифмической шкале.

geomspace(start, stop, …)

Формирование чисел по геометрической прогрессии.

meshgrid(x1, …, xn, …)

x1, …, xn – одномерные последовательности или массивы, используемые для формирования координатной сетки по каждой из осей.

mgrid[]

Возвращает массив плотных координатных сеток.

ogrid[]

Возвращает открытую сетку значений.

Давайте рассмотрим некоторые из них. Первая функция arrange довольно часто применяется в программах на Python. Она позволяет проходить заданный интервал с указанным шагом, например, так:

np.arange(5)# интервал [0; 5) с шагом 1
np.arange(1, 5)# интервал [1; 5) с шагом 1
np.arange(1, 5, 0.5) # интервал [1; 5) с шагом 0,5

Обратите внимание, в отличие от функции range языка Python в arrange пакета NumPy можно указывать вещественные значения. Вот еще один пример, демонстрирующий это:

np.arange(0, np.pi, 0.1)

Здесь все величины вещественные. Мы начинаем движение от значения 0 с шагом 0,1 пока не дойдем до значения пи (не включая его). И, далее, используя этот массив, можно вычислить синус или косинус от всех этих значений:

np.cos(np.arange(0, np.pi, 0.1))

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

Похожим образом работает и функция linspace. Она разбивает указанный интервал на равномерные отрезки и возвращает массив этих значений:

Мы указываем в качестве аргументов интервал [start; stop] и число отметок в этом интервале n. Если n = 0, то получим пустой массив. При n = 1 – значение start. При n = 2 – значения start и stop. При n> 2 равномерное разбиение интервала точками m = n-2. Например:

np. linspace(0, np.pi, 0) # пустой массив
np.linspace(0, np.pi, 1) # одно значение 0
np.linspace(0, np.pi, 2) # два значения: 0 и pi
np.linspace(0, np.pi, 3) # три значения: 0, pi/2, pi

В чем отличие linspace от arange? В arange мы указываем сами шаг движения по числовой оси. При этом число значений определяется граничными значениями. А в linspace мы задаем граничные значения и число делений, а шаг вычисляется автоматически.

Функции logspace и geomspace работают аналогичным образом. У них указываются граничные значения и число членов, а на выходе имеем массив из соответствующих величин. Например:

np.logspace(0, 1, 3) # значения: 1, sqrt(10), 10
np.logspace(0, 1, 4) # значения: 1, 2.15, 4.64, 10
 
np.geomspace(1, 4, 3) # значения: 1, 2, 4
np.geomspace(1, 16, 5) # значения: 1, 2, 4, 8, 16

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

Функции формирования массивов на основе данных

Рассмотрим следующую группу, связанную с формированием на основе уже имеющихся данных.

Название

Описание

array(object, …)

Преобразует список или кортеж object в массив NumPy.

asanyarray(list, …)

Преобразует список list в массив array, сохраняя тип подкласса.

ascontiguousarray(list, …)

Возвращает непрерывный массив в памяти, подобно как это организовано в языке C.

asmatrix(list, …)

Преобразует входную последовательность list в матрицу NumPy (тип matrix).

copy(list, …)

Возвращает копию массива list (если это объект NumPy) или просто создает массив на основе списка языка Python.

frombuffer(buffer, …)

Преобразует данные из буфера в массив NumPy

fromfile(file, …)

Возвращает массив из данных текстового или бинарного файла file.

fromfunction(func, shape, …)

Создает массивразмерностью shape с помощью функции func.

fromiter(iter, …)

Создает массив на основе итерируемого объекта.

fromstring(string, …)

Создает массив из данных строки.

loadtxt(file, …)

Формирует массив из данных текстового файла.

Работа этих функций вполне очевидна, рассмотрим только некоторые из них. Функция copy выполняет копирование массива. Например, имеется массив:

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

И создать его копию в памяти устройства, можно так:

b = np.copy(a)

В этом легко убедиться, если вывести id этих объектов:

print(id(a), id(b))

Формирование массива с помощью функции выполняется следующим образом:

def getRange(x, y):
    return 100*x + y
 
a = np.fromfunction(getRange, (2, 2))
print(a)

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

[[  0.   1.]
 [100. 101.]]

Отсюда хорошо видно как менялись значения x, y при формировании матрицы. При формировании первой строки x = 0, а yменялся от 0 до 1, при формировании второй строки: x = 1, yот 0 до 1.

Часто совместно с fromfunction используют лямбда-функции в виде:

np.fromfunction(lambda x, y: x*100+y, (2, 2))

Результат будет тем же.

Следующая функция fromiter позволяет формировать массив на основе любого итерируемого объекта. Например:

np.fromiter("hello", dtype='U1')

Здесь строка воспринимается как итерируемый объект и разбивается по символам. Или, можносделатьтак:

def getRange(N):
    for i in range(N):
        yield i
 
a = np. fromiter(getRange(4), dtype='int8')
print(a)

Здесь в качестве объекта передается функция-генератор и на выходе получаем одномерный массив чисел:

[0 1 2 3]

Последняя функция, которую мы рассмотрим fromstring позволяет создавать массив из строковых данных, например, так:

np.fromstring('1 2 3', dtype='int16', sep= ' ')

Здесь параметр sep определяет разделитель между данными. Если числа следуют через запятую, то это явно нужно указать в разделителе:

np.fromstring('1, 2, 3', dtype='int16', sep= ',')

Это не все функции, с помощью которых можно формировать массивы в NumPy. Я отметил лишь наиболее употребительные. Полный их список и подробное описание можно посмотреть на официальном сайте:

https://numpy.org/doc/stable/

Видео по теме

#1. Пакет numpy — установка и первое знакомство | NumPy уроки

#2. Основные типы данных. Создание массивов функцией array() | NumPy уроки

#3. Функции автозаполнения, создания матриц и числовых диапазонов | NumPy уроки

#4. Свойства и представления массивов, создание их копий | NumPy уроки

#5. Изменение формы массивов, добавление и удаление осей | NumPy уроки

#6. Объединение и разделение массивов | NumPy уроки

#7. Индексация, срезы, итерирование массивов | NumPy уроки

#8. Базовые математические операции над массивами | NumPy уроки

#9. Булевы операции и функции, значения inf и nan | NumPy уроки

#10. Базовые математические функции | NumPy уроки

#11. Произведение матриц и векторов, элементы линейной алгебры | NumPy уроки

#12. Множества (unique) и операции над ними | NumPy уроки

#13. Транслирование массивов | NumPy уроки

  • Предыдущая
  • Следующая

Матрица идентификации NumPy | Узнайте, как работает матрица идентификации NumPy?

Обновлено 15 апреля 2023 г.

Идентификационная матрица NumPy — это встроенная работа NumPy, которая используется для восстановления структуры, т. е. 2D-кластера, имеющего 1 в его основном перекосе и 0 в другом месте. Работа identity() описана в NumPy, которую можно импортировать как импорт NumPy как np, и мы можем создавать многомерные представления и делать другие числовые измерения с помощью NumPy. Кластер идентичности представляет собой квадратную экспозицию с единицами на первом наклоне. Работа Python identity() возвращает показатель личности. Количество строк (и разделов) в n x n yield. Информационный вид доходности.

Синтаксис и параметры

 NumPy.identity(dtype=None,n) 

Где

‘n’ представляет количество строк и столбцов в матрице идентификации NumPy.

Dtype представляет тип данных объекта, который по умолчанию берется как плавающий.

Возвращает кластер ndarray n x n с фундаментальным уклоном, установленным на один и все разные компоненты 0.

Как работает идентификационная матрица NumPy?

Теперь мы видим различные примеры того, как идентификационная матрица NumPy работает в Python.

Пример #1

Использование идентификационной матрицы NumPy для определения значений матрицы

Код:

 import numpy as geek
p = geek.identity(3, dtype = float)
print("Матрица p : \n", p)
s = geek.identity(6)
print("\nMatrix s : \n", s) 

Вывод:

В приведенной выше программе мы сначала импортируем библиотеку NumPy как гик и определяем матрицы s и p. После определения матриц мы хотели бы напечатать значения матриц, и именно по этой причине мы используем матричную функцию identity() для смещения значений матриц столько раз, сколько мы упомянули бы в программе. Следовательно, программа реализована, и результат показан на снимке выше.

Пример #2

Использование идентификационной матрицы NumPy для поиска значений матрицы нескольких массивов n*n

Код:

 import numpy as np
s = np.identity(3, dtype=int)
print("Матрица s : \n", s)
р = np.identity (4)
print("\nМатрица p : \n", p)
а = np.identity (4, dtype = с плавающей запятой)
print("\nМатрица а : \n", а)
n = np.identity(4, dtype=str)
print("\nMatrix n : \n", n) 

Вывод:

В приведенной выше программе у нас есть матрицы 2*2,3*3,4*4, и мы импортируем NumPy как np и реализовать значения всех этих значений матрицы. Затем мы используем идентификационную матрицу NumPy для предоставления значений для типов данных и, наконец, реализуем значения на основе заданного количества раз. Следовательно, программа реализована, и результат показан на снимке выше.

В первой емкости количество строк и секций было 2. Таким образом, была показана решетка 2 X 2, имеющая принцип перекоса с значением 1 с возвращаемым типом как int. Здесь значения дрейфа были возвращены, поскольку характерная работа имеет тип возврата на берег, как само собой разумеющееся. Во второй емкости число линий равнялось 3, а сечение равнялось 3. Вдоль этих линий была показана сеть 3 X 3, имеющая первичный перекос как 1 с типом возврата как на плаву.

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

В четвертой емкости количество строк было 3, а сегмента было 3. Таким образом, была показана сетка 3 X 3, имеющая исходный наклон 1 с возвращаемым типом в виде строки.

NumPy — это пакет для логической регистрации, который поддерживает удивительный N-мерный выставочный объект. NumPy дает многомерный кластер чисел, который на самом деле является статьей. Для увеличения двух фреймворков мы используем технику speck(). Ознакомьтесь с тем, как работает numpy.dot. * используется для увеличения кластера (увеличения связанных компонентов двух экспонатов), а не дублирования решетки. Как и записи, мы можем получить доступ к сетевым компонентам, используя список. NumPy, который представляет Numerical Python, представляет собой библиотеку, состоящую из многомерных выставочных объектов и наборов расписаний для обработки этих кластеров. Используя NumPy, можно выполнять числовые и интеллектуальные процедуры на выставках.

Заключение

Таким образом, в заключение я хотел бы сказать, что NumPy является лучшей библиотекой для комплексного управления экспонатами. Рассчитывать экспонаты с помощью библиотек NumPy чрезвычайно просто. Кластерное управление в какой-то степени простое, но я вижу множество новых учеников или умеренных дизайнеров, обнаруживающих проблемы в управлении решетками. Транспонирование — это еще одна структура, возникающая в результате того, что все компоненты линий присутствуют в сегменте, а вредная привычка — наоборот. Вы можете обнаружить перевод сети, используя матричную переменную T. Например, в этой ситуации мне нужно отобразить матрицу 2. Структура обычно используется исследователем информации для управления информацией. После прочтения этого учебного упражнения, я надеюсь, вы сможете управлять фреймворком.

Рекомендуемые статьи

Это руководство по матрице идентификации NumPy. Здесь мы обсудим, как работает идентификационная матрица NumPy, а также синтаксис и параметры. Вы также можете ознакомиться со следующими статьями, чтобы узнать больше:

  1. NumPy fft
  2. NumPy.argmax()
  3. NumPy Раунд
  4. numpy.dot ()

Матрица идентификации NumPy

Python

9 месяцев назад

Омар Фарук

Матрица идентичности NumPy — это функция, которая возвращает матрицу идентичности на выходе с учетом переданных ей параметров. Единичная матрица — это тип матрицы, которая имеет положительное вещественное число, например «1», на диагонали (основной), а все остальные элементы в этой матрице равны нулю. Такие матрицы можно использовать для представления математического уравнения системы. Кроме того, единичные матрицы можно использовать для нахождения обратной матрицы. Эта матрица при умножении сама на себя дает такую ​​же матрицу, как тождество. Есть много приложений этой матрицы, которые применяются к различным инженерным приложениям. NumPy — это библиотека, представленная платформой Python. Эта библиотека в основном занимается математическими вычислениями, статистическими операциями и многомерными массивами и матрицами.

Процедура

Мы следуем последовательной процедуре, чтобы дать подробное объяснение темы «Идентификация Numpy» в этой конкретной статье. Мы даем исчерпывающее объяснение синтаксиса матрицы идентификации NumPy. Чтобы глубже понять эту функцию, мы попытаемся реализовать различные выдающиеся примеры, связанные с матрицей идентификации NumPy. Язык программирования, сценарий которого мы будем использовать для реализации матрицы идентичности, — «Python».

Синтаксис

Мы никогда не сможем реализовать какую-либо функцию, если у нас нет предварительных знаний об основных параметрах этой функции. Точно так же мы должны получить хорошее представление о матричной функции идентичности. Синтаксис этой конкретной функции можно описать двумя способами. Оба эти способа являются модификациями друг друга. Основной синтаксис функции идентификации вместе с ее параметром обсуждается ниже:

$ np. Удостоверение (n)
$ np. Идентификатор (n, dtype)

На основе двух ранее упомянутых синтаксисов для вызова функции идентификации имеется один параметр «n», который является общим для обоих методов. Этот параметр «n» должен явно принимать размеры или порядок единичной матрицы, которые мы хотим, чтобы функция возвращала в качестве вывода. Это «n» может быть любым положительным действительным числом. Затем идет еще один параметр, описанный во втором методе как «dtype». Этот dtype является дополнительным параметром, и его обязательность может быть выбрана как необязательная или обязательная в зависимости от наших требований. Тип dtype — это тип данных элементов, которые мы хотим разместить на главной диагонали и других элементах нашей матрицы идентичности. Этот тип данных может быть целочисленным, плавающим, двойным, строковым и т. д.  

Пример 1

Использовать функцию матрицы идентичности с библиотекой NumPy довольно просто. Здесь, в этом примере, мы используем первый метод, который мы обсуждали ранее в статье под заголовком «Синтаксис». Чтобы реализовать эту функцию, мы должны сначала открыть наши компиляторы Python и убедиться, что мы установили в них все необходимые пакеты, чтобы мы могли позже импортировать библиотеки из этих пакетов в наш код. Поскольку тождество является косвенной матрицей, мы имеем дело с матрицей. Чтобы объявить матрицу, воспользуемся помощью библиотеки «NumPy».

У нас есть два варианта импорта NumPy: либо мы можем просто использовать numpy как numpy, либо использовать псевдоним для NumPy. Наиболее распространенная практика по соглашению заключается в том, что мы используем префикс вместо вызова самого NumPy, поэтому «импортируйте NumPy как np». Теперь мы используем это «np» для вызова функции матрицы идентичности. Чтобы заставить его работать, мы вызываем функцию «np. Тождество (н)». «n» — это входной аргумент для этой функции, и он представляет размерность матрицы единичного квадрата. В этом примере мы создаем квадратную единичную матрицу порядка 3 × 3, что означает, что единичная матрица имеет три строки и три столбца. Затем мы пытаемся отобразить вывод, вызвав метод «print()».

import numpy as np
# объявление единичной матрицы размером 3×3 упомянутый код и вывод кода, который возвращает единичную матрицу, имеющую три столбца и три строки. Эта единичная матрица имеет «1» на своей главной диагонали (поскольку этот метод принимает тип данных как число с плавающей запятой по умолчанию), а остальные элементы матрицы равны нулю.

Пример 2

В предыдущем примере мы реализовали пример создания единичной матрицы с помощью первого метода, описанного в разделе «Синтаксис». Во втором примере используется второй метод для функции идентификации. Для этого мы импортируем NumPy с префиксом «np». Теперь мы используем этот np в качестве замены NumPy всякий раз, когда мы вызываем любую функцию, которая вызывает с ним NumPy. Мы создаем единичную матрицу, вызывая функцию «np. Идентичность (n, dtype)». Число n матрицы равно 5, что означает, что единичная матрица состоит из пяти строк и пяти столбцов. И мы устанавливаем dtype на «плавающий», что означает, таким образом, что основные диагональные элементы единичной матрицы имеют тип данных с плавающей запятой. Затем выводим матрицу с помощью функции «print()». Мы можем скопировать и выполнить следующий код Python, чтобы создать матрицу идентичности и проверить результаты.

import numpy as np
# объявление единичной матрицы размером 5×5 второй пример представляет собой единичную матрицу размерами в пять строк и пять столбцов, имеющую тип float «1» на главной диагонали и остальные элементы равны нулю.

Заключение

В статье показан метод реализации функции идентификации NumPy в скрипте Python.