2012-12-12 3 views

risposta

6

Se si vuole ottenere una matrice sparsa come output il modo più veloce per fare fila affettare è quello di avere un tipo di csr, e per le colonne affettare csc, as detailed here. In entrambi i casi devi solo fare quello che si sta facendo:

matrix[l1:l2,c1:c2] 

Se volete un altro tipo di output ci modi forse più veloci. In this other answer vengono spiegati molti metodi per affettare una matrice e confrontare i loro tempi diversi. Ad esempio, se si desidera un ndarray come output l'affettamento più veloce è:

matrix.A[l1:l2,c1:c2] 

o:

matrix.toarray()[l1:l2,c1:c2] 

molto più veloce di:

matrix[l1:l2,c1:c2].A #or .toarray() 
+7

Ma matrix.A porterà a memoryError se la matrice è molto grande. – Munichong