Matriz nula con diagonal constante, con la misma forma que otra matriz

Me pregunto si hay una forma sencilla de multiplicar una matriz de números por un escalar. Esencialmente quiero que todos los valores se multipliquen por la constante 40. Esto sería una matriz nxn con 40 en la diagonal, pero me pregunto si hay una función más simple para usar para escalar esta matriz. O ¿cómo podría hacer una matriz con la misma forma que mi otra matriz y completar su diagonal?

Lo siento si esto parece un poco básico, pero por alguna razón no pude encontrar esto en el documento.

Si desea una matriz con 40 en la diagonal y ceros en cualquier otra parte, puede usar la función fill_diagonal() NumPy en una matriz de ceros. De este modo puedes hacer directamente:

 N = 100; value = 40 b = np.zeros((N, N)) np.fill_diagonal(b, value) 

Esto implica solo establecer elementos a un cierto valor y, por lo tanto, es probable que sea más rápido que el código que involucra la multiplicación de todos los elementos de una matriz por una constante. Este enfoque también tiene la ventaja de mostrar explícitamente que llena la diagonal con un valor específico.

Si desea que la matriz diagonal b sea ​​del mismo tamaño que otra matriz a , puede usar el siguiente método abreviado (sin necesidad de un tamaño explícito N ):

 b = np.zeros_like(a) np.fill_diagonal(b, value) 

Fácil:

 N = 100 a = np.eye(N) # Diagonal Identity 100x100 array b = 40*a # Multiply by a scalar 

Si realmente desea una matriz numpy vs una matriz, puede hacer a = np.asmatrix(np.eye(N)) lugar. Pero en general * es la multiplicación de elementos en números.