Existe una manera eficiente de concatenar matrices scipy.sparse?

Estoy trabajando con algunas matrices dispersas bastante grandes (de 5000x5000 a 20000x20000) y necesito encontrar una manera eficiente de concatenar matrices de manera flexible para construir una matriz estocástica a partir de partes separadas.

Ahora estoy usando la siguiente forma para concatenar cuatro matrices, pero es terriblemente ineficiente. ¿Hay alguna manera mejor de hacer esto que no implique la conversión a una matriz densa?

rmat[0:m1.shape[0],0:m1.shape[1]] = m1
rmat[m1.shape[0]:rmat.shape[0],m1.shape[1]:rmat.shape[1]] = m2
rmat[0:m1.shape[0],m1.shape[1]:rmat.shape[1]] = bridge
rmat[m1.shape[0]:rmat.shape[0],0:m1.shape[1]] = bridge.transpose()

Respuestas a la pregunta(4)

Su respuesta a la pregunta