Методы ниже могут быть не одной строкой, но они должны быть быстрыми!
метод 1: создать массив с np.ones
и заполнить fill_diagonal
с numpy
,Вы можете использовать np.ones
и np.fill_diagonal
:
a = 5
size = 5
arr = np.ones((size,size)) * a
np.fill_diagonal(arr, a-1)
>>> arr
array([[4., 5., 5., 5., 5.],
[5., 4., 5., 5., 5.],
[5., 5., 4., 5., 5.],
[5., 5., 5., 4., 5.],
[5., 5., 5., 5., 4.]])
метод 2: вместо диагонали заполните np.diag_indices
:
В качестве альтернативы, используя np.diag_indices
:
arr = np.ones((size,size)) * a
di = np.diag_indices(size)
arr[di] = a-1
метод 3: создать массив с np.full
Вы также можете создать исходный массив, используя np.full
вместо np.ones
:
arr = np.full((size,size), a)
np.fill_diagonal(arr, a-1)
# or:
# arr = np.full((size,size), a)
# np.fill_diagonal(arr, a-1)