Метод diagonal
Метод diagonal класса ndarray извлекает диагональные элементы из двумерного массива. По умолчанию возвращается главная диагональ (от левого верхнего угла до правого нижнего). Метод позволяет смещать диагональ вверх или вниз с помощью параметра offset.
Синтаксис
arr.diagonal(offset=0, axis1=0, axis2=1)
Параметры метода:
offset - смещение диагонали относительно главной. Положительное значение смещает диагональ вверх (правее главной), отрицательное - вниз (левее главной). По умолчанию равен 0.
axis1 и axis2 - оси, по которым извлекается диагональ. По умолчанию используются последние две оси массива. Для двумерных массивов эти параметры можно не указывать.
Пример
Давайте создадим квадратную матрицу и извлечём главную диагональ:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.diagonal()
print(res)
Результат выполнения кода:
[1 5 9]
Пример
Теперь получим диагональ со смещением вверх на единицу:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.diagonal(offset=1)
print(res)
Результат выполнения кода:
[2 6]
Обратите внимание, что диагональ короче главной, так как она смещена и содержит меньше элементов.
Пример
Извлечём диагональ со смещением вниз на единицу:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.diagonal(offset=-1)
print(res)
Результат выполнения кода:
[4 8]
В этом случае элементы берутся с диагонали, расположенной под главной.
Пример
Рассмотрим работу метода с прямоугольной матрицей:
import numpy as np
arr = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
res = arr.diagonal()
print(res)
Результат выполнения кода:
[1 6 11]
Для прямоугольной матрицы длина диагонали определяется минимальным размером массива.