Ich habe einen Matlab-Code auf Python portiert und Probleme mit der Effizienz konfrontiert.Matlab zu Python-Port-Optimierung
Zum Beispiel kommt hier ein Ausschnitt:
G = np.vstack((Gx.toarray(), Gy.toarray(), Gd1.toarray(), Gd2.toarray()))
hier alle Elemente gestapelt sind 22500 von 22500 sparce Matrizen werden. Es stirbt direkt auf meinem Windows-64-Bit-Maschine mit folgenden Fehler:
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
MemoryError
Ich bin ganz neu in Python, ist es eine gute Artikel über Best Practices für eine solche Optimierung? Gibt es Informationen darüber, wie numpy mit dem Speicher funktioniert?
Soweit ich weiß Sparce-Matrizen in irgendeiner Art von komprimiertem Format gespeichert und nehmen viel weniger Platz als, aber nehmen Sie viel mehr Zeit mit zu arbeiten.
Thx!
Sie sind eine dichte oder Sparse Matrix/Array als Ausgang erwartet ? – Divakar
@Divakar der Ausgang ist spärlich – Anton
Der beste Rat auf Optimierung ist - versuchen Sie es nicht, bis Ihr Code funktioniert. Der Speicherfehler bedeutet, dass eines oder mehrere dieser dichten Arrays zu viel Speicherplatz einnehmen, viel mehr als die dünn besetzten Matrizen. Das ist eine harte Einschränkung. Geschwindigkeit ist eine weiche. – hpaulj