Один из способов - перевернуть матрицу, вычислить диагональ и затем перевернуть ее еще раз.
Функция np.diag()
в numpy либо извлекает диагональ из матрицы, либо строит диагональную матрицу из массива,Вы можете использовать его дважды, чтобы получить диагональную матрицу.
Таким образом, у вас будет что-то вроде этого:
import numpy as np
a = np.arange(25).reshape(5,5)
>>> a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
b = np.fliplr(np.diag(np.diag(np.fliplr(a))))
>>> b
[[ 0 0 0 0 4]
[ 0 0 0 8 0]
[ 0 0 12 0 0]
[ 0 16 0 0 0]
[20 0 0 0 0]]
Хотя я не уверен, насколько эффективным будет все это сделать.
Это создает анти-диагональную матрицу, а не перевернутую версию единичной матрицы.
Если вы хотите перевернутую версию матрицы тождеств, вы можете просто вызвать np.fliplr()
на выходе np.eye(n)
.Например:
>>> np.fliplr(np.eye(5))
array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 1., 0., 0., 0., 0.]])