Вы можете создать свой массив в один слой.
np.fromfunction(lambda r,c: r-c, (11,11))
Результат:
array([[ 0., -1., -2., -3., -4., -5., -6., -7., -8., -9., -10.],
[ 1., 0., -1., -2., -3., -4., -5., -6., -7., -8., -9.],
[ 2., 1., 0., -1., -2., -3., -4., -5., -6., -7., -8.],
[ 3., 2., 1., 0., -1., -2., -3., -4., -5., -6., -7.],
[ 4., 3., 2., 1., 0., -1., -2., -3., -4., -5., -6.],
[ 5., 4., 3., 2., 1., 0., -1., -2., -3., -4., -5.],
[ 6., 5., 4., 3., 2., 1., 0., -1., -2., -3., -4.],
[ 7., 6., 5., 4., 3., 2., 1., 0., -1., -2., -3.],
[ 8., 7., 6., 5., 4., 3., 2., 1., 0., -1., -2.],
[ 9., 8., 7., 6., 5., 4., 3., 2., 1., 0., -1.],
[ 10., 9., 8., 7., 6., 5., 4., 3., 2., 1., 0.]])
Каждая ячейка в массиве - это номер строки за вычетом номера столбца.Первый аргумент - это функция, принимающая строку и столбец в качестве аргументов.Второе - необходимая форма.