Ich habe eine große Datentabelle im Bereich von Hunderten Millionen Zeilen/Ereignissen, von denen jede etwa 50 numerische Spalten hat, nennen Sie sie c1 bis c50. Angenommen, ich möchte für jedes Ereignis eine Matrix-Vektor-Multiplikation durchführen, bei der ich eine Matrix über z. B.
M = ( (c1, c2, c3), (c4, c5, c6), (c7, c8, c9) )
und einen Vektor über z. B.
v = (c48, c49, c50)
Nun könnte ich dies über Numpy tun, aber aufgrund der Größe meines Datensatzes übersteigt ein einzelner Vorgang den Arbeitsspeicher, was heutzutage ein immer wichtigerer Gesichtspunkt ist. Die offensichtliche Lösung besteht darin, den Auftrag in Stapel aufzuteilen und die Größe jedes einzelnen manuell anzupassen. Es ist jedoch keine unterhaltsame Aufgabe, und ich habe herausgefunden, dass die Polars-Bibliothek diese Aufgabe erfüllen kann, indem sie die Streaming-Engine verwendet und die folgenden Ausgaben speichert:
v1 = c1 * c48 + c2 * c49 + c3 * c50
und das Gleiche gilt für die anderen beiden Ausgabevektorkomponenten. Insbesondere bedeutet die Verwendung der Streaming-Engine, dass ich nicht über die Partitionierung des Datensatzes in Stapel nachdenken muss. Glücklicherweise sind alle diese Operationen nur pro Zeile verfügbar, was bedeutet, dass alle Multiplikationen und Additionen in der Streaming-Engine verfügbar sind. Wenn ich jedoch Matrizenmultiplikationen miteinander verketten muss oder die Matrizen größer werden, können Sie sich vorstellen, wie umständlich das wird.
Ich versuche mir daher ein System oder einen Wrapper auszudenken, um die Erweiterung aller Operationen der linearen Algebra in Multiplikation und Addition zu automatisieren, aber ich hatte nicht viel Glück, obwohl es wahrscheinlich kein sehr schwieriges Problem sein sollte. Ich weiß, dass Polars vielleicht nicht speziell dafür entwickelt wurde, aber seine Streaming-Engine macht diese Richtung im Vergleich zu Numpy sehr attraktiv.
Vielen Dank für die Hilfe.
Wie führt man eine Matrixmultiplikation innerhalb der Polars-Streaming-Engine ergonomisch durch? ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Parkett vorübergehend unter der Polars-Streaming-Engine versenken/scannen
by Anonymous » » in Python - 0 Replies
- 16 Views
-
Last post by Anonymous
-
Mobile version