Estoy trabajando en un algoritmo que usa bloques diagonales y primeros bloques fuera de la diagonal de una matriz dispersa diagonal de bloques grande (será e06 x e06).Cómo crear una referencia de vista/pitón en una matriz escasa scipy?
Ahora creo un dict que almacena los bloques de tal manera que pueda acceder a los bloques de forma similar a la matriz. Por ejemplo B [0,0] (5x5) da el primer bloque de la matriz A
(20x20), asumiendo bloques de 5x5 y esa matriz A
es del tipo sparse.lil
.
Esto funciona bien, pero lleva demasiado tiempo correr también. Es ineficiente porque copia los datos, ya que esta referencia reveló para mi asombro: GetItem Method
¿Hay alguna forma de almacenar una vista en una matriz dispersa en un dict? Me gustaría cambiar el contenido y aún así poder usar los mismos identificadores. Está bien si lleva un poco más de tiempo, ya que solo debería hacerse una vez. Los bloques tendrán muchas dimensiones y formas diferentes.
Bonito, parece justo lo que necesitaba, lo siento por el retraso en responder estoy tratando de modificar el código para aceptar múltiples bloques de diferentes tamaños para una matriz. No me ayudes todavía, quiero resolverlo por mi cuenta :). Si me encuentro con más problemas, volveré. Gracias – Jonas
Tenga en cuenta que desde la versión 0.11.0, SciPy tiene una (función diagonal de bloques) [docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.block_diag.html#scipy.sparse.block_diag] que se ve para ser útil aquí. – drevicko