Datenwissenschaft

So berechnen Sie Matrizen in Python ohne NumPy

So berechnen Sie Matrizen in Python ohne NumPy
Für viele Anwendungen braucht man Mathematik. In Python gibt es das Mathe-Modul, das die Grundlagen wie Runden, Fakultäts- und Rundungsfunktionen behandelt. Es enthält auch Potenz- und Logarithmus-, Trigonometrie-, Winkel- und Hyperbelfunktionen. Für komplexe Zahlen ist das Modul cmath. Diese verarbeiten jedoch keine Matrixoperationen.

Was ist der Unterschied zwischen Arrays und Matrizen??

Einige Leute suchen nach Matrixlösungen für Array-Probleme, was ist also der Unterschied??  Der große Unterschied besteht darin, dass Matrixwerte Zahlen sind, ein Array kann andere Informationen enthalten, sogar Strings.  Matrizen können Gleichungen darstellen, hier benötigen die meisten Entwickler sie, zumindest wenn NumPy . ersetzt wird.

Wie führt man eine Matrixberechnung durch??

Die Standard-Matrix-Operationen sind einfach durchzuführen, beim Addieren addieren Sie einfach die Elemente, beim Multiplizieren können Sie jedem Element einen Skalar zuordnen und so weiter.

Die Multiplikation ist etwas komplexer, aber sehr wenig. Was es schwer macht, ist, dass Sie für jede Lösung viele Berechnungen durchführen müssen, hier kommt die Leistung ins Spiel. Da die meisten Berechnungen nicht voneinander abhängig sind, sind diese Berechnungen ausgezeichnete Kandidaten für parallele Berechnungen. GPUs sind für diese Art von Berechnungen ausgelegt und können problemlos zu Desktop-Systemen hinzugefügt werden.

Wenn Sie in Python Matrixberechnungen durchführen müssen, ist die erste Lösung, die Sie finden, numPy.  Allerdings ist NumPy nicht immer das effizienteste System zur Berechnung vieler Matrizen.
In diesem Beitrag erfahren Sie, welche Optionen Sie in Python haben.

Wenn Sie Alternativen benötigen, suchen Sie zunächst genauer nach, wofür Sie Matrixoperationen benötigen need. Ihre aktuelle Installation verfügt möglicherweise bereits über eine eigene Implementierung oder verwendet eine zugrunde liegende Bibliothek. Ein Beispiel ist Machine Learning, wo die Notwendigkeit von Matrixoperationen im Vordergrund steht. TensorFlow verfügt über eine eigene Bibliothek für Matrixoperationen. Stellen Sie sicher, dass Sie Ihre aktuelle Bibliothek kennen.

In vielen Fällen benötigen Sie jedoch eine Lösung, die für Sie funktioniert. Möglicherweise gibt es Einschränkungen in NumPy, einige Bibliotheken sind schneller als NumPy und speziell für Matrizen entwickelt. Oftmals möchten Entwickler ihren Code beschleunigen, um nach Alternativen zu suchen. Ein Grund ist, dass NumPy nicht auf GPUs laufen kann.

Während es in diesem Beitrag um Alternativen zu NumPy geht, einer auf NumPy aufbauenden Bibliothek, muss die Theano-Bibliothek erwähnt werden. Die Theano-Bibliothek ist eng in NumPy integriert und ermöglicht GPU-unterstützte Matrix. Theano ist eine größere Bibliothek für maschinelles Lernen, aber Sie können nur die Matrixfunktionen herausheben.

Eine ausführlichere Erklärung zur Verwendung von Theano finden Sie auf dieser Seite: http://www.marekrei.com/blog/theano-tutorial/

SpPy ist eine Bibliothek speziell für dünn besetzte Arrays, sie kann weiterhin für Matrizen verwendet werden. Ein dünn besetztes Array ist übrigens ein Array, das viele Nullwerte enthält. Diese Bibliothek ist klein und effizient, aber aufgrund ihrer Spezialisierung etwas eingeschränkt limited. Es verwendet auch NumPy, ist aber effizienter als nur NumPy.
https://pythonhosted.org/sppy/

Eigen ist eine effiziente Implementierung von Matrizen, um sie in Python zu verwenden, benötigen Sie miniEigen, verfügbar unter https://pypi.org/pypi/minieigen. Eigen ist tatsächlich in vielen anderen Lösungen enthalten. Sie fungiert als generische Matrixbibliothek für spezialisiertere Module und Frameworks. Diese Bibliothek enthält viele Module für die dichte Matrix- und Array-Manipulation. Es unterstützt auch lineare Algebra, Zerlegung und spärliche lineare Algebra. Das Paket verfügt auch über eine Plugin-Funktion, sodass Sie Ihre eigenen Module hinzufügen können.
Um Eigen zu verwenden, installiere es mit pip und importiere es in deinen Code.

PyTorch ist eine Bibliothek für maschinelles Lernen, daher verfügt es über Matrixoperationen. Das Importieren der gesamten Bibliothek ist übertrieben, wenn Sie nur wenige Berechnungen durchführen möchten. Wenn Sie jedoch gerade erst mit einem Machine-Learning-Projekt beginnen, stellen Sie sicher, dass Sie sich entscheiden, ob dieses für Sie geeignet ist.
Eine andere Alternative besteht darin, eine beliebige C-Bibliothek zu holen und diese zu verwenden. Um dies zu ermöglichen, gibt es eine Lösung namens cffi, die die Schnittstelle für Sie erstellt. Diese Lösung erfordert, dass Sie C bereits kennen und für jede benötigte Funktion einen Wrapper erstellen. Der Code sieht dann unübersichtlich und schwer zu lesen aus, aber das kann sich je nach Projekt lohnen.

Wenn Sie nur alle Array- und numerischen Funktionen beschleunigen möchten, können Sie stattdessen Numba verwenden. Numba ist ein Python-Compiler. Wenn Sie es verwenden, erstellt der Compiler Binärcode 'just in time', jit. Die Idee von Jit wird häufiger mit Java verwendet, ist aber für anspruchsvolle Mathematik in Python sehr nützlich. Da Python interpretiert wird, können Sie bei schwerer Mathematik Leistungsprobleme bekommen. Numba kümmert sich darum, indem es nach Ihrer Wahl auf CPU oder GPU kompiliert.
Es stehen auch parallele Computing-Funktionen zur Verfügung, standardmäßig läuft der Compiler mit einer Sperre, die verhindert, dass viele Threads gleichzeitig ausgeführt werden. Sie können dies durch ein Flag ausschalten, solange Sie sich der möglichen Probleme im Zusammenhang mit der parallelen Programmierung bewusst sind.

Fazit

Wenn Sie mit der Programmierung in Python oder anderen Sprachen beginnen, stoßen Sie oft an Einschränkungen der Sprache, des Compilers oder anderer Dinge. Wenn Sie sich in dieser Situation befinden, sollten Sie innehalten und darüber nachdenken, welche Einschränkung Sie haben, und überlegen, wie viele andere möglicherweise die gleiche Situation hatten. Im Fall von Python und NumPy haben viele Wissenschaftler und Entwickler Code geschrieben, der eine schnelle Ausführung erfordert. Dieses Erbe hat eine große Anzahl von Zweigen geschaffen, die Ihr Problem lösen können, ohne dass Sie gezwungen sind, die Sprache zu wechseln oder eine neue Erweiterung für diese bestimmte Sprache zu schreiben.

So öffnen Sie die Tar-Datei Linux
Im Internet sind mehrere Dateien verfügbar, die für Linux heruntergeladen werden können, jedoch als Tar-Datei komprimiert sind. Tar-Dateien speichern ...
So komprimieren Sie Dateien mit zstd über die Befehlszeile oder das Bash-Skript
In der modernen Welt interagieren und arbeiten wir überall und täglich mit Daten data. Abhängig von den jeweiligen Anforderungen und den zu verarbeite...
So entpacken Sie Dateien in Linux
Tar ist ein recht beliebtes Archivformat, insbesondere unter Linux. In vielen Fällen verwenden Distributionen Tar-Archive, um Paketaktualisierungen be...