es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

llene los elementos diagonales y fuera de la diagonal de una matriz cuadrada utilizando elementos de lista

Tengo una pregunta sobre cómo llenar una matriz cuadrada de ceros (por ejemplo, 4 * 4). He escrito dos listas que contienen los valores que se colocarán en los elementos diagonales y fuera de la diagonal de la matriz cuadrada.

mat = [[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]]

elementos_diagonales en una lista: – [a, b, c, d] elementos_fueradiagonal en una lista: – [e, f, g, h, i, j, l,..]

donde

a = mat(1_1)
b = mat(2_2)
e = mat(1_2)
f = mat(1_3)
g = mat(1_4)
h = mat(2_1) etc … elementos respectivamente.

¿Puede alguien decirme cómo agregar estos valores adecuadamente a la matriz?

Esto es lo que he intentado hasta ahora en esta sección.

i=4
Hmat=np.zeros((i,i),dtype=float)
print(Hmat)

print(Hmat.diagonal())

for s in P:
    print(s)
    Hmat = np.fill_diagonal(Hmat, float(s))

me sigue dando este error:

AttributeError: el objeto ‘NoneType’ no tiene ningún atributo ‘ndim’

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar la función np.fill_diagonal() para llenar los elementos diagonales de la matriz. Para llenar los elementos fuera de la diagonal, puedes utilizar un bucle para iterar a través de la lista de elementos fuera de la diagonal y asignarlos a las posiciones correspondientes en la matriz. Por ejemplo:


    <h1>Crear una matriz de 4x4 de ceros</h1> mat = np.zeros((4,4)) <h1>Llenar los elementos diagonales</h1> elementos_diagonales = [a,b,c,d] np.fill_diagonal(mat, elementos_diagonales) <h1>Llenar los elementos fuera de la diagonal</h1> elementos_fuerade_diag = [e,f,g,h,i,j,k,l] <h1>Iterar a través de la lista y asignar los elementos a las posiciones correspondientes en la matriz</h1> for elemento in elementos_fuerade_diag: mat[1,0] = e mat[2,0] = f mat[3,0] = g mat[2,1] = h mat[3,1] = i mat[3,2] = j mat[0,1] = k mat[0,2] = l

    Esto debería llenar la matriz con los elementos correspondientes.

Comments are closed.