Функция diagflat
Функция diagflat создает двумерную диагональную матрицу
из переданных данных. Первым параметром функция принимает
объект, который будет преобразован в плоский массив для размещения
на диагонали. Вторым параметром можно задать смещение диагонали
относительно главной.
Синтаксис
np.diagflat(object, [k=0])
Параметр object - это данные для размещения на диагонали.
Параметр k - смещение диагонали (по умолчанию 0).
Положительное значение сдвигает диагональ вверх, отрицательное - вниз.
Пример
Давайте создадим диагональную матрицу из одномерного массива чисел:
import numpy as np
arr = np.diagflat([1, 2, 3, 4])
print(arr)
Результат выполнения кода:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
Функция разместила элементы входного массива на главной диагонали результирующей квадратной матрицы.
Пример
Теперь создадим матрицу со смещением диагонали вверх на одну позицию:
import numpy as np
arr = np.diagflat([5, 6, 7], k=1)
print(arr)
Результат выполнения кода:
[[0 5 0 0]
[0 0 6 0]
[0 0 0 7]
[0 0 0 0]]
Элементы разместились на диагонали, сдвинутой вверх. Размер матрицы определяется длиной входных данных и величиной смещения.
Пример
Функция может принимать двумерный массив, который будет сплющен:
import numpy as np
data = np.array([[1, 2], [3, 4]])
arr = np.diagflat(data)
print(arr)
Результат выполнения кода:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
Входной двумерный массив был преобразован в плоский порядке по строкам, после чего элементы размещены на диагонали.
Пример
Создадим матрицу с диагональю, смещенной вниз на две позиции:
import numpy as np
arr = np.diagflat([10, 20, 30], k=-2)
print(arr)
Результат выполнения кода:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 10 0 0]
[0 0 0 20 0]
[0 0 0 0 30]]
При отрицательном смещении диагональ располагается ниже главной. Размер матрицы увеличивается, чтобы вместить все элементы с учетом сдвига.