Функция Python numpy.diagflat(a, k = 0) создает двумерный массив с вводом array_like в качестве диагонали к новому выходному массиву.
Что такое функция np.diagflat() в Python?
Функция Numpy diagflat() создает двумерный массив в Python, состоящий из входных данных, сглаженных по диагонали. Функция np.diagflat() принимает входные данные и помещает их на главную диагональ нулевого массива. Мы также можем установить ввод над главной диагональю или под ней.
Синтаксис
|
1 |
numpy.diagflat(v, k=0) |
Параметры
- v:(array_like)
Входные данные сглаживаются и устанавливаются как k-я диагональ вывода.
- k:(int,optional)
Диагональ по умолчанию установлена на 0, соответствует «главной диагонали», значение k (как положительное, так и отрицательное) дает номер диагонали выше или ниже главной соответственно.
Возвращаемое значение
Метод дает вывод в виде двумерного массива. Массив состоит из входных данных по главной диагонали, а остальные все элементы равны нулю.
Примеры программ с функцией diagflat() в Python
- Пример 1.
|
1 2 3 4 5 6 7 |
import numpy as np print("diagflat use on main diagonal: \n",np.diagflat([1,2]),"\n") print("diagflat use on main diagonal: \n",np.diagflat([1,7,6]),"\n") print("diagflat use on main diagonal: \n",np.diagflat([11,17,16,12]),"\n") print("diagflat use on main diagonal: \n",np.diagflat([[21,27],[22,28]]),"\n") print("diagflat use on main diagonal: \n",np.diagflat([[31,37,36],[33,34,35]]),"\n") |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Value for parameter [1,2] diagflat use on main diagonal: array([[1, 0], [0, 2]]) Value for parameter [1,7,6] diagflat use on main diagonal: array([[1, 0, 0], [0, 7, 0], [0, 0, 6]]) Value for parameter [11,17,16,12] diagflat use on main diagonal: array([[11, 0, 0, 0], [ 0, 17, 0, 0], [ 0, 0, 16, 0], [ 0, 0, 0, 12]]) Value for parameter [[21,27],[22,28]] diagflat use on main diagonal: array([[21, 0, 0, 0], [ 0, 27, 0, 0], [ 0, 0, 22, 0], [ 0, 0, 0, 28]]) Value for parameter [[31,37,36],[33,34,35]] diagflat use on main diagonal: array([[31, 0, 0, 0, 0, 0], [ 0, 37, 0, 0, 0, 0], [ 0, 0, 36, 0, 0, 0], [ 0, 0, 0, 33, 0, 0], [ 0, 0, 0, 0, 34, 0], [ 0, 0, 0, 0, 0, 35]]) |
Здесь мы преобразуем входной массив в форму двумерного массива с элементами массива, присутствующими на главной диагонали двумерного массива. Мы видим, что сформированный двумерный массив имеет размер NxN, а недиагональные элементы заполнены нулями. Итак, здесь мы ввели массив элементов списков.
- Пример 2. Напишем программу, показывающую, как работает метод diagflat() в Python, и выведем ввод выше и ниже главной диагонали.
|
1 2 3 4 5 6 |
import numpy as np print("diagflat above main diagonal:\n",np.diagflat([1,7,6],1),"\n") print("diagflat below main diagonal:\n",np.diagflat([1,7,6],-1),"\n") print("diagflat above main diagonal:\n",np.diagflat([1,7,6],2),"\n") print("diagflat below main diagonal:\n",np.diagflat([1,7,6],-2),"\n") |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Value for parameter diagflat([1,7,6], 1) diagflat above main diagonal: array([[0, 1, 0, 0], [0, 0, 7, 0], [0, 0, 0, 6], [0, 0, 0, 0]]) Value for parameter diagflat([1,7,6], -1) diagflat below main diagonal: array([[0, 0, 0, 0], [1, 0, 0, 0], [0, 7, 0, 0], [0, 0, 6, 0]]) Value for parameter diagflat([1,7,6], 2) diagflat above main diagonal: array([[0, 0, 1, 0, 0], [0, 0, 0, 7, 0], [0, 0, 0, 0, 6], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]) Value for parameter diagflat([1,7,6], -2) diagflat below main diagonal: array([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 7, 0, 0, 0], [0, 0, 6, 0, 0]]) |
Объяснение.
Здесь мы преобразуем входной массив в форму двумерного массива с элементами, расположенными выше и ниже главной диагонали двумерного массива. Мы видим, что двумерный массив сформирован, а элементы массива вставляются либо выше главной диагонали, либо ниже, в зависимости от входных данных.
Отрицательное число после ввода массива указывается ниже главной диагонали, а положительное — выше главной диагонали. Здесь мы дали ввод массива элементов списков.
