Функция np.diag() определена в библиотеке numpy, которую можно импортировать как import numpy as np. Мы можем создавать многомерные массивы и получать другую математическую статистику с помощью numpy. Имя функции Python diag() происходит от diagonal.
Что такое функция np.diag() в Python?
Функция np.diag() извлекает и создает диагональный массив на Python. Она принимает массив и k в качестве параметров и возвращает диагональный массив из заданного массива.
Синтаксис
|
1 |
numpy.diag(arr,k) |
Параметры
Функция принимает два параметра, один из которых является необязательным.
- Первый параметр — это входной массив, представленный arr.
- Второй параметр — k, является необязательным и по умолчанию принимает значение 0. Если значение этого параметра больше 0, это означает, что диагональ находится выше главной диагонали, и наоборот, если нет.
Возвращаемое значение
Возвращает массив с диагональным массивом.
Примеры программ для метода diag() в Python
Напишем программу, показывающую работу функции diag() в Python.
Пример 1
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py import numpy as np a = np.matrix([[1, 2, 3], [4, 5, 6], [9, 8, 7]]) print("Main Diagonal: \n", np.diag(a), "\n") print("Above main diagonal: \n", np.diag(a, 1), "\n") # k=1(for above main diagonal) print("Below main diagonal: \n", np.diag(a, -1)) # k=-1(for below main diagonal) |
Выход
|
1 2 3 4 5 |
Main Diagonal: [1 5 7] Above main diagonal: [2 6] Below main diagonal: [4 8] |
В этом примере мы используем numpy diag() и можем видеть, что, передавая разные значения k, можем получить их диагональные элементы. Здесь мы увидели главную диагональ в матрице, затем диагональ выше главной диагонали при передаче значения k=1 и наоборот при передаче значения k=-1.
Пример 2
Напишем программу, которая берет матрицу 4×4 и применяет функцию diag().
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# app.py import numpy as np a = np.matrix([[1, 2, 3], [4, 5, 6], [9, 8, 7], [11, 13, 15]]) print("Main Diagonal: \n", np.diag(a), "\n") # k=1(for above main diagonal) print("Above main diagonal: \n", np.diag(a, 1), "\n") #k=-1(for below main diagonal) print("Below main diagonal: \n", np.diag(a, -1)) |
Выход
|
1 2 3 4 5 6 7 8 9 |
python3 app.py Main Diagonal: [1 5 7] Above main diagonal: [2 6] Below main diagonal: [ 4 8 15] |
В этом примере мы передали матрицу 4 × 4 и получили требуемый результат главной диагонали, выше главной диагонали (k = 1) и ниже главной диагонали (k = -1).
Создание массива и построение диагонали
См. следующий код.
|
1 2 3 4 5 6 7 |
import numpy as np data = np.arange(12).reshape((4,3)) print(data) dignl = np.diag(data, k=0) print('The diagonal is: ') print(dignl) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] The diagonal is: [0 4 8] |
В этом примере мы взяли k = 0. Это главная диагональ, которая состоит из
- 0
- 4
- 8
Если мы возьмем k = 1, он вернет [1, 5]. См. следующий код.
|
1 2 3 4 5 6 7 8 9 |
# app.py import numpy as np data = np.arange(12).reshape((4,3)) print(data) dignl = np.diag(data, k=1) print('The diagonal is: ') print(dignl) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] The diagonal is: [1 5] |
Если мы возьмем k = -1, это даст нам нижнюю диагональ главной диагонали.
См. следующий код.
|
1 2 3 4 5 6 7 |
import numpy as np data = np.arange(12).reshape((4, 3)) print(data) dignl = np.diag(data, k=-1) print('The diagonal is: ') print(dignl) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] The diagonal is: [ 3 7 11] |
Главная диагональ нашего массива — [0, 4, 8], а нижняя диагональ — [3, 7, 11]. Вот почему, когда мы устанавливаем k=-1, он вернет [3, 7, 11]. Если вы передадите k = -2, то он вернет [6, 10]
Построение диагонали из массива NumPy
Если вы хотите создать диагональ из массива, вы можете использовать метод np diag().
|
1 2 3 4 5 6 7 8 9 |
# app.py import numpy as np a = np.array([1, 2, 3, 4]) print(a) d = np.diag(a) print('The diagonal is: ') print(d) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py [1 2 3 4] The diagonal is: [[1 0 0 0] [0 2 0 0] [0 0 3 0] [0 0 0 4]] |
Если у вас есть вектор-строка, вы можете сделать следующее.
|
1 2 3 4 5 6 7 8 9 |
# app.py import numpy as np a = np.array([[1, 2, 3, 4]]) print(a) d = np.diag(a[0]) print('The diagonal is: ') print(d) |
Выход
|
1 2 3 4 5 6 7 |
python3 app.py [[1 2 3 4]] The diagonal is: [[1 0 0 0] [0 2 0 0] [0 0 3 0] [0 0 0 4]] |
Заключение
Функция Python numpy.diagonal() используется для извлечения диагонали и записи в полученный массив; возвращает она копию или представление, зависит от того, какую версию numpy вы используете.
