Если вам нужна матрица с 40 на диагонали и нулями везде, вы можете использовать функцию NumPy fill_diagonal()
на матрице нулей.Таким образом, вы можете напрямую сделать:
N = 100; value = 40
b = np.zeros((N, N))
np.fill_diagonal(b, value)
Это включает в себя только установку элементов на определенное значение и, следовательно, скорее всего будет быстрее, чем код, предполагающий умножение всех элементов матрицы на константу.Этот подход также имеет то преимущество, что вы явно указываете, что вы заполняете диагональ определенным значением.
Если вы хотите, чтобы диагональная матрица b
была такого же размера, как другая матрица a
, вы можете использоватьследующий ярлык (нет необходимости в явном размере N
):
b = np.zeros_like(a)
np.fill_diagonal(b, value)