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.

¿Es posible insertar una matriz pequeña dentro de una matriz grande en una ubicación deseada?

Tengo que insertar una pequeña matriz en una matriz grande (matriz de ceros), estaba tratando de hacerlo a través de un bucle, pero cada vez obtengo el error de valor: no se pudo transmitir la matriz de entrada desde la forma (6,6) hacia la forma (4,4).

Hay dos problemas:
1) cómo insertarlo en la matriz de ceros (especificando la ubicación en la gran matriz de ceros).
2) cómo colocar esa matriz desde la fila 23 de la matriz de 40 * 40 ceros.

import numpy as np
ndofs = 39
k = np.array(  [  [   1,         0,        1,       0,          0,          0 ],
                  [   0,         12,       6,       0,        -12,          6 ],
                  [   0,         6 ,       4,       0,         -6,          2 ],
                  [   1,          0,       0,       1,          0,          0 ],
                  [   0,        -12,      -6,       0,         12,          6 ],
                  [   0,          6,       2,       0,         -6,          4 ] ] )

K = np.zeros((ndofs+1,ndofs+1))
print(K.shape)

for i in range(ndofs):
    Ktemp = np.zeros((ndofs+1,ndofs+1))
    Ktemp[3*i:3*i+6, 3*i:3*i+6] = k
    K  += Ktemp

print(K)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para insertar una pequeña matriz en una matriz grande (de ceros), podemos utilizar la técnica de segmentación de Numpy. Primero, especificamos la ubicación en la matriz grande donde queremos insertar la pequeña matriz. Por ejemplo, si queremos insertar la pequeña matriz “k” en una matriz de 40*40 de ceros empezando desde la 23° fila, podemos hacerlo utilizando el siguiente código:
    “`
    zeros_matrix = np.zeros((40, 40))
    small_matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])

    insertar la pequeña matriz en la matriz grande empezando desde la 23° fila

    zeros_matrix[23:26, 0:3] = small_matrix
    “`

    Aquí, estamos especificando la ubicación en la matriz grande como las filas 23 a 25 (ya que la pequeña matriz tiene 3 filas) y las columnas 0 a 2 (ya que la pequeña matriz tiene 3 columnas).

    En cuanto al error de valor que está teniendo, parece que las dimensiones de su pequeña matriz “k” no son compatibles con las dimensiones del subconjunto de la matriz grande que está intentando reemplazar. En otras palabras, la cantidad de filas y columnas en la pequeña matriz deben ser iguales a la cantidad de filas y columnas en el subconjunto de la matriz grande que está reemplazando.

    Por ejemplo, si desea insertar la pequeña matriz “k” en un subconjunto de la matriz grande con dimensiones de (4,4), debe asegurarse de que las dimensiones de la pequeña matriz también sean (4,4). Si las dimensiones de la pequeña matriz son (6,6), recibirá el error “no se pudo transmitir la matriz de entrada”.

    ¡Espero que esto ayude! Avíseme si tiene más preguntas.

Comments are closed.