Häufig gestellte Fragen

Was ist SciPy?#

SciPy ist eine Sammlung von Open-Source-Werkzeugen (BSD-Lizenz) für wissenschaftliche und numerische Berechnungen in Python. Es unterstützt derzeit Spezialfunktionen, Integration, Löser für gewöhnliche Differentialgleichungen (ODE), Gradientenoptimierung, parallele Programmierwerkzeuge, einen Compiler von Ausdrücken zu C++ für schnelle Ausführung und andere. Eine gute Faustregel ist, dass wenn etwas in einem allgemeinen Lehrbuch über numerische Berechnungen behandelt wird (z. B. die bekannte Reihe Numerical Recipes), es wahrscheinlich in SciPy implementiert ist.

Wie viel kostet es?#

SciPy ist kostenlos erhältlich. Es wird als Open-Source-Software vertrieben, was bedeutet, dass Sie vollständigen Zugriff auf den Quellcode haben und ihn nach Belieben nutzen können, solange die Bedingungen seiner liberalen BSD-Lizenz eingehalten werden.

Welchen Lizenzbedingungen unterliegt SciPy?#

Die Lizenz von SciPy ist für die kommerzielle und nicht-kommerzielle Nutzung kostenlos, gemäß den Bedingungen der BSD-Lizenz hier.

Wie kann SciPy schnell sein, wenn es in einer interpretierten Sprache wie Python geschrieben ist?#

Tatsächlich sind die zeitkritischen Schleifen normalerweise in C, C++ oder Fortran implementiert. Teile von SciPy sind dünne Code-Schichten über den wissenschaftlichen Routinen, die kostenlos unter https://www.netlib.org/ verfügbar sind. Netlib ist ein riesiges Repository von unglaublich wertvollen und robusten wissenschaftlichen Algorithmen, die in C und Fortran geschrieben sind. Es wäre töricht, diese Algorithmen neu zu schreiben, und es würde Jahre dauern, sie zu debuggen. SciPy verwendet eine Vielzahl von Methoden, um "Wrapper" um diese Algorithmen zu generieren, damit sie in Python verwendet werden können. Einige Wrapper wurden durch manuelles Codieren in C erstellt. Die restlichen wurden entweder mit SWIG oder f2py generiert. Einige der neueren Beiträge zu SciPy sind entweder vollständig in Cython oder Pythran geschrieben oder damit umschlossen.

Eine zweite Antwort ist, dass für schwierige Probleme ein besserer Algorithmus einen enormen Unterschied bei der Zeit macht, die zur Lösung eines Problems benötigt wird. Daher kann die Verwendung der integrierten Algorithmen von SciPy viel schneller sein als ein einfacher Algorithmus, der in C codiert ist.

Ich habe einen Bug gefunden. Was soll ich tun?#

Das SciPy-Entwicklungsteam arbeitet hart daran, SciPy so zuverlässig wie möglich zu machen, aber wie bei jedem Softwareprodukt treten Fehler auf. Wenn Sie Fehler finden, die Ihre Software beeinträchtigen, teilen Sie uns dies bitte mit, indem Sie ein Ticket im SciPy-Bug-Tracker erstellen.

Wie kann ich mich bei SciPy engagieren?#

Besuchen Sie unsere Community-Seite. Wir freuen uns über mehr Leute, die uns beim Schreiben von Code, Tests, Dokumentationen und der Hilfe bei der Website unterstützen.

Gibt es kommerziellen Support?#

Ja, kommerzieller Support für SciPy wird von einer Reihe von Unternehmen angeboten, zum Beispiel Anaconda, Enthought und Quansight.

NumPy vs. SciPy vs. andere Pakete

Was ist der Unterschied zwischen NumPy und SciPy?#

In einer idealen Welt würde NumPy nichts als den Array-Datentyp und die grundlegendsten Operationen enthalten: Indizierung, Sortierung, Umformung, grundlegende elementweise Funktionen usw. Der gesamte numerische Code würde in SciPy liegen. Eines der wichtigen Ziele von NumPy ist jedoch die Kompatibilität, sodass NumPy versucht, alle Funktionen beizubehalten, die von seinen Vorgängern unterstützt wurden. Daher enthält NumPy einige Funktionen der linearen Algebra und Fourier-Transformationen, auch wenn diese eher in SciPy gehören. In jedem Fall enthält SciPy vollständigere Versionen der Module für lineare Algebra sowie viele andere numerische Algorithmen. Wenn Sie wissenschaftliche Berechnungen mit Python durchführen, sollten Sie wahrscheinlich sowohl NumPy als auch SciPy installieren. Die meisten neuen Funktionen gehören eher in SciPy als in NumPy.

Wie erstelle ich Diagramme mit SciPy?#

Die Plotting-Funktionalität liegt außerhalb des Geltungsbereichs von SciPy, das sich auf numerische Objekte und Algorithmen konzentriert. Es gibt mehrere Pakete, die eng mit SciPy integriert sind, um qualitativ hochwertige Diagramme zu erstellen, wie z. B. das äußerst beliebte Matplotlib. Andere beliebte Optionen sind Bokeh, Plotly und Altair.

Wie erstelle ich 3D-Diagramme/Visualisierungen mit SciPy?#

Wie das 2D-Plotting ist auch die 3D-Grafik außerhalb des Geltungsbereichs von SciPy. Genau wie im 2D-Fall gibt es jedoch Pakete, die mit SciPy integriert werden. Matplotlib bietet grundlegendes 3D-Plotting im Unterpaket mplot3d, während Mayavi eine breite Palette von hochwertigen 3D-Visualisierungsfunktionen bietet, die die leistungsstarke VTK-Engine nutzen.

Warum sowohl numpy.linalg als auch scipy.linalg? Was ist der Unterschied?#

scipy.linalg ist eine vollständigere Abdeckung von Fortran LAPACK unter Verwendung von f2py.

Eines der Designziele von NumPy war es, es ohne Fortran-Compiler bauen zu können. Wenn Sie LAPACK nicht verfügbar haben, verwendet NumPy seine eigene Implementierung. SciPy benötigt einen Fortran-Compiler zum Bauen und ist stark auf umschlossenen Fortran-Code angewiesen.

Die linalg-Module in NumPy und SciPy enthalten einige gemeinsame Funktionen, jedoch mit unterschiedlichen Docstrings. scipy.linalg enthält Funktionen, die in numpy.linalg nicht zu finden sind, wie z. B. Funktionen im Zusammenhang mit der LU-Zerlegung und der Schur-Zerlegung, mehrere Möglichkeiten zur Berechnung der Pseudoinversen und Matrix-Transzendenten wie der Matrix-Logarithmus. Einige Funktionen, die in beiden vorhanden sind, haben in scipy.linalg erweiterte Funktionalität; zum Beispiel kann scipy.linalg.eig ein zweites Matrixargument für die Lösung von verallgemeinerten Eigenwertproblemen aufnehmen.

Unterstützung für Python-Versionen

Unterstützen NumPy und SciPy noch Python 2.7?#

Die letzte Version von NumPy, die Python 2.7 unterstützt, ist NumPy 1.16.x. Die letzte SciPy-Version, die dies tut, ist SciPy 1.2.x. Die erste Veröffentlichung von NumPy, die Python 3.x unterstützt, war NumPy 1.5.0. Die Unterstützung für Python 3 in SciPy wurde in SciPy 0.9.0 eingeführt.

Funktioniert SciPy mit PyPy?#

Im Allgemeinen ja. Jüngste Verbesserungen in PyPy haben dazu geführt, dass der wissenschaftliche Python-Stack mit PyPy funktioniert. Da ein großer Teil von SciPy als C-Erweiterungsmodule implementiert ist, läuft der Code möglicherweise nicht schneller (in den meisten Fällen ist er immer noch erheblich langsamer, aber PyPy arbeitet aktiv daran, dies zu verbessern). Wie immer bei Benchmarks ist Ihre Erfahrung der beste Ratgeber.

Funktioniert SciPy mit Jython oder C#/.NET?#

Nein, keines von beiden wird unterstützt. Jython funktionierte nie, weil es auf der Java Virtual Machine läuft und keine Möglichkeit hat, mit Erweiterungen zu interagieren, die für den Standard-Python-Interpreter (CPython) in C geschrieben sind.

Vor einigen Jahren gab es Bestrebungen, NumPy und SciPy mit .NET kompatibel zu machen. Einige Benutzer berichteten damals von Erfolg bei der Verwendung von NumPy mit Ironclad unter 32-Bit-Windows. Schließlich ist Pyjion ein neues Projekt, das Berichten zufolge mit SciPy funktionieren könnte.

In jedem Fall gehören diese Laufzeiten/Compiler nicht zum Geltungsbereich von SciPy und werden vom Entwicklungsteam nicht offiziell unterstützt.

Wo finde ich Hilfe

Siehe die Community-Seite.

Auf dieser Seite