Вы можете добиться того же поведения, что и diagonal
, просто используя arange
для строк и столбцов.Удалите индекс, который вас не интересует, прежде чем индексировать (как отметил @hpaulj в комментариях, практически быстрее просто найти диагональ и впоследствии удалить индекс):
Настройка
a = np.arange(25).reshape(5,5)
i = 3 # exclude the diagonal element at index 3
array([[ 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]])
d = np.arange(a.shape[0])
m = np.delete(d, i)
a[m, m]
array([ 0, 6, 12, 24])