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.
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.
Die Lizenz von SciPy ist für die kommerzielle und nicht-kommerzielle Nutzung kostenlos, gemäß den Bedingungen der BSD-Lizenz hier.
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.
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.
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.
Ja, kommerzieller Support für SciPy wird von einer Reihe von Unternehmen angeboten, zum Beispiel Anaconda, Enthought und Quansight.
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.
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 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.
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.
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.
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.
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.
Siehe die Community-Seite.