SciPy-Tutorial: Was ist Python SciPy und wie wird es verwendet?



SciPy ist eine Python-Bibliothek zur Lösung wissenschaftlicher und mathematischer Probleme. NumPy vs SciPy. Basic, Special, Integration, Optimierung usw. mit Beispielen.

Die Mathematik befasst sich mit einer Vielzahl von Konzepten, die sehr wichtig, aber gleichzeitig komplex und zeitaufwändig sind. Jedoch, bietet die vollwertige SciPy-Bibliothek, die dieses Problem für uns löst. In diesem SciPy-Tutorial lernen Sie, wie Sie diese Bibliothek zusammen mit einigen Funktionen und ihren Beispielen verwenden.

Bevor Sie fortfahren, werfen Sie einen Blick auf alle in diesem Artikel behandelten Themen:





Also lasst uns anfangen. :) :)

Was ist SciPy?

SciPy ist eine Open-Source-Python-Bibliothek, mit der wissenschaftliche und mathematische Probleme gelöst werden. Es ist auf dem gebaut Erweiterung und ermöglicht es dem Benutzer, Daten mit einer Vielzahl von Befehlen auf hoher Ebene zu bearbeiten und zu visualisieren. Wie bereits erwähnt, baut SciPy auf NumPy auf. Wenn Sie SciPy importieren, müssen Sie NumPy nicht importieren.



NumPy vs SciPy

Sowohl NumPy als auch SciPy sind wird für die verwendete mathematische und numerische Analyse verwendet. NumPy enthält Array-Daten und grundlegende Operationen wie Sortieren, Indizieren usw., während SciPy aus dem gesamten numerischen Code besteht. Obwohl NumPy eine Reihe von bietet SciPy ist die Bibliothek, die neben vielen anderen Versionen dieser Funktionen auch voll funktionsfähige Versionen dieser Funktionen enthält. Wenn Sie jedoch wissenschaftliche Analysen mit Python durchführen, müssen Sie sowohl NumPy als auch SciPy installieren, da SciPy auf NumPy aufbaut.

Unterpakete in SciPy:

SciPy verfügt über eine Reihe von Unterpaketen für verschiedene wissenschaftliche Berechnungen, die in der folgenden Tabelle aufgeführt sind:

Was sind Daten in der Wissenschaft?
NameBeschreibung
ClusterClustering-Algorithmen
KonstantenPhysikalische und mathematische Konstanten
fftpackSchnelle Fourier-Transformationsroutinen
integrierenIntegrations- und gewöhnliche Differentialgleichungslöser
interpolierenInterpolation und Glättung von Splines
ichEin- und Ausgabe
linalgLineare Algebra
ich fliegeN-dimensionale Bildverarbeitung
odrOrthogonale Distanzregression
optimierenOptimierungs- und Root-Finding-Routinen
SignalSignalverarbeitung
spärlichSparse Matrizen und zugehörige Routinen
räumlichGeodatenstrukturen und Algorithmen
BesondereSpezialfunktionen
StatistikenStatistische Verteilungen und Funktionen

Für eine detaillierte Beschreibung können Sie jedoch dem folgen offizielle Dokumentation .



Diese Pakete müssen ausschließlich vor ihrer Verwendung importiert werden. Beispielsweise:

vom scipy Importcluster

Bevor wir uns diese Funktionen im Detail ansehen, werfen wir zunächst einen Blick auf die Funktionen, die sowohl in NumPy als auch in SciPy üblich sind.

Basisfunktionen:

Interaktion mit NumPy:

SciPy baut auf NumPy auf und daher können Sie die NumPy-Funktionen selbst verwenden, um Arrays zu verarbeiten. Um mehr über diese Funktionen zu erfahren, können Sie einfach die Funktionen help (), info () oder source () verwenden.

Hilfe():

Um Informationen zu einer Funktion zu erhalten, können Sie die verwenden Hilfe() Funktion. Es gibt zwei Möglichkeiten, wie diese Funktion verwendet werden kann:

  • ohne irgendwelche Parameter
  • mit Parametern

Hier ist ein Beispiel, das beide oben genannten Methoden zeigt:

aus scipy import cluster help (cluster) #with parameter help () #without parameter

Wenn Sie den obigen Code ausführen, gibt die erste Hilfe () die Informationen über die zurück Cluster Submodul. Die zweite Hilfe () fordert den Benutzer auf, den Namen eines Moduls, Schlüsselworts usw. einzugeben, für das der Benutzer Informationen suchen möchte. Um die Ausführung dieser Funktion zu stoppen, geben Sie einfach 'quit' ein und drücken Sie die Eingabetaste.

die Info():

Diese Funktion gibt Informationen über das gewünschte zurück , Module usw.

scipy.info (Cluster)

Quelle():

Der Quellcode wird nur für Objekte zurückgegeben, in die geschrieben wurde . Diese Funktion gibt keine nützlichen Informationen zurück, wenn die Methoden oder Objekte in einer anderen Sprache wie C geschrieben sind. Wenn Sie diese Funktion jedoch verwenden möchten, können Sie dies wie folgt tun:

scipy.source (Cluster)

Spezialfunktionen:

SciPy bietet eine Reihe spezieller Funktionen, die in der mathematischen Physik verwendet werden, wie z. B. Ellipsentrainer, Komfortfunktionen, Gamma, Beta usw.Um nach allen Funktionen zu suchen, können Sie die Funktion help () wie zuvor beschrieben verwenden.

Exponentielle und trigonometrische Funktionen:

Das Spezialfunktionspaket von SciPy bietet eine Reihe von Funktionen, mit denen Sie Exponenten finden und trigonometrische Probleme lösen können.

Betrachten Sie das folgende Beispiel:

BEISPIEL:

aus scipy importieren special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( d)

AUSGABE:

1000.0
8.0
1.0
0,7071067811865475

Das Sonderfunktionspaket von SciPy enthält viele weitere Funktionen, die Sie selbst ausprobieren können.

Integrationsfunktionen:

SciPy bietet eine Reihe von Funktionen zum Lösen von Integralen. SciPy ist ein Speicher von Funktionen zur Lösung aller Arten von Integralproblemen, angefangen vom gewöhnlichen Differentialintegrator bis hin zur Verwendung trapezförmiger Regeln zur Berechnung von Integralen.

Allgemeine Integration:

SiPy bietet eine Funktion namens Quad das Integral einer Funktion mit einer Variablen zu berechnen. Die Grenzen können sein ± & infin((± inf), um unendliche Grenzen anzuzeigen. Die Syntax der Funktion quad () lautet wie folgt:

SYNTAX:

quad (func, a, b, args = (), full_output = 0, epsabs = 1,49e-08, epsrel = 1,49e-08, limit = 50, points = None, weight = None, wvar = None, wopts = None , maxp1 = 50, limlst = 50)

Hier wird die Funktion zwischen den Grenzen a und b integriert (kann auch unendlich sein).

BEISPIEL:

aus scipy importieren special aus scipy importieren integrieren a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

Im obigen Beispiel wird die Funktion 'a' zwischen den Grenzwerten 0, 1 ausgewertet. Wenn dieser Code ausgeführt wird, wird die folgende Ausgabe angezeigt.

AUSGABE:

(3.9086503371292665, 4.3394735994897923e-14)

Doppelte Integralfunktion:

SciPy bietet dblquad das kann verwendet werden, um Doppelintegrale zu berechnen. Wie viele von uns wissen, besteht ein Doppelintegral aus zwei reellen Variablen. Die Funktion dblquad () übernimmt die zu integrierende Funktion als Parameter zusammen mit 4 anderen Variablen, die die Grenzen und Funktionen definieren dy und dx.

BEISPIEL:

aus scipy import integrieren a = Lambda y, x: x * y ** 2 b = Lambda x: 1 c = Lambda x: -1 integrieren.dblquad (a, 0, 2, b, c)

AUSGABE:

-1,33333333333333335, 1,4802973661668755e-14)

SciPy bietet verschiedene andere Funktionen zur Auswertung von Dreifachintegralen, n Integralen, Romberg-Integralen usw., die Sie im Detail untersuchen können. Verwenden Sie die Hilfefunktion, um alle Details zu den erforderlichen Funktionen zu finden.

Optimierungsfunktionen:

Die Datei scipy.optimize bietet eine Reihe häufig verwendeter Optimierungsalgorithmen, die mithilfe der Hilfefunktion angezeigt werden können.

Es besteht im Wesentlichen aus Folgendem:

  • Unbeschränkte und eingeschränkte Minimierung multivariater Skalarfunktionen, d.h. minimieren (z. B. BFGS, Newton Conjugate Gradient, Nelder_mead Simplex usw.)
  • Globale Optimierungsroutinen (z. B. Differential_evolution, Dual_annealing usw.)
  • Minimierung der kleinsten Quadrate und Kurvenanpassung (z. B. kleinste Quadrate, Kurvenanpassung usw.)
  • Skalare univariate Funktionen Minimierer und Root-Finder (z. B. minimieren_scalar und root_scalar)
  • Multivariate Gleichungssystemlöser mit Algorithmen wie Hybrid Powell, Levenberg-Marquardt.

Rosenbrook Funktion:

Rosenbrook-Funktion ( Rosen ) ist ein Testproblem für gradientenbasierte Optimierungsalgorithmen. Es ist in SciPy wie folgt definiert:

Rosen-Scipy Tutorial-EdurekaBEISPIEL:

importiere numpy als np von scipy.optimize importiere rosen a = 1,2 * np.arange (5) rosen (a)

AUSGABE: 7371.0399999999945

Nelder-Mead:

DasNelder–Mead-Methode ist eine numerische Methode, die häufig verwendet wird, um das Min / Max einer Funktion in einem mehrdimensionalen Raum zu ermitteln. Im folgenden Beispiel wird die Minimierungsmethode zusammen mit dem Nelder-Mead-Algorithmus verwendet.

BEISPIEL:

vom Scipy-Import optimieren a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimieren.minimieren (optimieren.rosen, a, Methode = 'Nelder-Mead') b.x.

AUSGABE: Array ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Interpolationsfunktionen:

Im Bereich der numerischen Analyse bezieht sich Interpolation auf die Konstruktion neuer Datenpunkte innerhalb eines Satzes bekannter Datenpunkte. Die SciPy-Bibliothek besteht aus einem Unterpaket mit dem Namen scipy.interpolate, das aus bestehtSpline-Funktionen und -Klassen, eindimensionale und mehrdimensionale (univariate und multivariate) Interpolationsklassen usw.

Univariate Interpolation:

Univariate Interpolation ist im Grunde ein Bereich der Kurvenanpassung, derfindet die Kurve, die eine exakte Anpassung an eine Reihe zweidimensionaler Datenpunkte liefert. SciPy bietet interp1d Funktion, die verwendet werden kann, um eine univariate Interpolation zu erzeugen.

BEISPIEL:

importiere matplotlib.pyplot als plt aus scipy importiere interpolate x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # Interpolationsfunktion verwenden, die von `interp1d` zurückgegeben wird. plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

AUSGABE:

Multivariate Interpolation:

Multivariate Interpolation(räumlichInterpolation) ist eine ArtInterpolationauf Funktionen, die aus mehr als einer Variablen bestehen. Das folgende Beispiel zeigt ein Beispiel für die interp2d Funktion.
Bei der Interpolation über ein 2D-Gitter mit der Funktion interp2d (x, y, z) werden grundsätzlich x-, y- und z-Arrays verwendet, um eine Funktion zu approximieren f: 'z = f (x, y)' und gibt eine Funktion zurück, deren Aufrufmethode verwendet Spline-Interpolation um den Wert neuer Punkte zu finden.
BEISPIEL:

aus scipy import interpolieren import matplotlib.pyplot als plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolate.interp2d (x, y, z, kind = 'kubisch') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0 ,:], 'ro-', x2, z2 [0 ,:], '-') plt.show ()

AUSGABE:

Fourier-Transformationsfunktionen:

Die Fourier-Analyse ist eine Methode, die sich mit dem Ausdrücken einer Funktion als Summe periodischer Komponenten und dem Wiederherstellen des Signals von diesen Komponenten befasst. Das fft Funktionen können verwendet werden, um die zurückzugebendiskrete Fourier-Transformation einer reellen oder komplexen Sequenz.

BEISPIEL:

aus scipy.fftpack importieren fft, ifft x = np.array ([0,1,2,3]) y = fft (x) print (y)

AUSGABE: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

In ähnlicher Weise können Sie die Umkehrung davon finden, indem Sie die ifft Funktion wie folgt:

BEISPIEL:

rom scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) print (y)

AUSGABE: [1,5 + 0.j -0,5-0,5j -0,5 + 0.j -0,5 + 0,5j]

Signalverarbeitungsfunktionen:

Signalverarbeitung befasst sich mitAnalysieren, Ändern und Synthetisieren von Signalen wie Ton, Bild usw. SciPy bietet einige Funktionen, mit denen Sie eindimensionale und zweidimensionale Daten entwerfen, filtern und interpolieren können.

Filtern:

Durch Filtern eines Signals entfernen Sie grundsätzlich unerwünschte Komponenten. Um eine geordnete Filterung durchzuführen, können Sie die verwenden order_filter Funktion. Diese Funktion führt grundsätzlich eine geordnete Filterung für ein Array durch. Die Syntax dieser Funktion lautet wie folgt:

SYNTAX:
order_filter (a, domain, rank)

a = N-dimensionales Eingabearray

domain = Maskenarray mit der gleichen Anzahl von Dimensionen wie 'a'

rank = Nicht negative Zahl, die Elemente aus der Liste auswählt, nachdem sie sortiert wurden (0 ist die kleinste, gefolgt von 1…)

BEISPIEL:

vom scipy-Importsignal x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

AUSGABE:

[[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

[[0. 1. 2. 3. 0.]
[5. 6. 7. 8. 3.]
[10. 11. 12. 13. 8.]
[fünfzehn. 16. 17. 18. 13.]
[zwanzig. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Wellenformen:

Das Unterpaket scipy.signal besteht auch aus verschiedenen Funktionen, mit denen Wellenformen generiert werden können. Eine solche Funktion ist zwitschern . Diese Funktion ist ein fDer Frequenz-Sweep-Cosinus-Generator und die Syntax lauten wie folgt:

SYNTAX:
Chirp (t, f0, t1, f1, Methode = 'linear', phi = 0, vertex_zero = True)

wo,

BEISPIEL:

aus scipy.signal import chirp, spektrogramm import matplotlib.pyplot als plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('Zeit in Sekunden)') plt.show ()

AUSGABE:

Lineare Algebra:

Die lineare Algebra befasst sich mit linearen Gleichungen und ihren Darstellungen unter Verwendung von Vektorräumen und Matrizen. SciPy baut darauf aufATLAS LAPACK und BLAS Bibliotheken und istextrem schnell bei der Lösung von Problemen im Zusammenhang mit linearer Algebra. Neben allen Funktionen von numpy.linalg bietet scipy.linalg auch eine Reihe weiterer erweiterter Funktionen. Auch wenn numpy.linalg nicht zusammen mit verwendet wirdATLAS LAPACK und BLAS unterstützen, scipy.linalg ist schneller als numpy.linalg.

Das Inverse einer Matrix finden:

Mathematisch ist die Umkehrung einer Matrix A.ist die MatrixB.so dassAB = I.woichist die Identitätsmatrix, die aus Einsen in der Hauptdiagonale besteht, die als bezeichnet wirdB = A.-ein. In SciPy kann diese Umkehrung mit dem erhalten werden linalg.inv Methode.

BEISPIEL:

importiere numpy als np von scipy importiere linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

AUSGABE:

[[-0,6 0,4]
[0,8 -0,2]]

Determinanten finden:

Der arithmetisch aus den Koeffizienten der Matrix abgeleitete Wert ist als Determinante einer quadratischen Matrix bekannt. In SciPy kann dies mithilfe einer Funktion erfolgen das welches die folgende Syntax hat:

SYNTAX:
det (a, overwrite_a = False, check_finite = True)
wo,

a: (M, M) Ist eine quadratische Matrix

overwrite_a (bool, optional): Erlaubt das Überschreiben von Daten in a

check_finite (bool, optional): Zum Überprüfen, ob die Eingabematrix nur aus endlichen Zahlen besteht

BEISPIEL:

importiere numpy als np aus scipy importiere linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

AUSGABE: -5.0

Spärliche Eigenwerte:

Eigenwerte sind ein spezifischer Satz von Skalaren, die mit linearen Gleichungen verknüpft sind. Mit dem ARPACK können Sie Eigenwerte (Eigenvektoren) sehr schnell finden. Die gesamte Funktionalität von ARPACK ist in enthaltenzwei übergeordnete Schnittstellen: scipy.sparse.linalg.eigs und scipy.sparse.linalg.eigsh. eigs. Über die eigssh-Schnittstelle können Sie die Eigenwerte von reellen oder komplexen unsymmetrischen quadratischen Matrizen ermitteln, während die eigsh-Schnittstelle Schnittstellen für real-symmetrische oder komplex-hermitische Matrizen enthält.

Das acht Die Funktion löst ein verallgemeinertes Eigenwertproblem für eine komplexe hermitische oder reelle symmetrische Matrix.

BEISPIEL:

aus scipy.linalg importieren acht import numpy als np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = acht (A) print ('Ausgewählte Eigenwerte:', a) print ('Complex ndarray:', b)

AUSGABE:

Ausgewählte Eigenwerte: [-2.53382695 1.66735639 3.69488657 12.17158399]
Komplexes ndarray: [[0.69205614 0.5829305 0.25682823 -0.33954321]
[-0,68277875 0,46838936 0,03700454 -0,5595134]
[0.23275694 -0.29164622 -0.72710245 -0.57627139]
[0.02637572 -0.59644441 0.63560361 -0.48945525]]

Geodatenstrukturen und Algorithmen:

Geodaten bestehen im Wesentlichen aus Objekten, die aus Linien, Punkten, Flächen usw. bestehen. Das scipy.spatial-Paket von SciPy kann berechnenVoronoi-Diagramme, Triangulationen usw. mithilfe der Qhull-Bibliothek. Es besteht auch aus KDTree-Implementierungen für Punktabfragen zum nächsten Nachbarn.

Delaunay-Triangulationen:

Mathematisch gesehen sind Delaunay-Triangulationen für eine Menge diskreter Punkte in einer Ebene eine Triangulation, so dass kein Punkt in der gegebenen Menge von Punkten vorhanden istinnerhalb des Kreises eines Dreiecks.

BEISPIEL:

importiere matplotlib.pyplot als plt aus scipy.spatial importiere Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (Punkte) #Delaunay Objektdruck (a) Druck (a.simplices) plt.triplot (Punkte [:, 0], Punkte [:, 1], a.simplices) plt.plot (Punkte [:, 1], Punkte [:, 0], 'o') plt.show ()

AUSGABE:

Mehrdimensionale Bildverarbeitungsfunktionen:

Die Bildverarbeitung befasst sich im Wesentlichen mit der Ausführung von Operationen an einem Bild, um Informationen abzurufen oder ein verbessertes Bild vom Original zu erhalten. Das Paket scipy.ndimage besteht aus einer Reihe vonBildverarbeitungs- und Analysefunktionen für Arrays beliebiger Dimensionalität.

Faltung und Korrelation:

SciPy bietet eine Reihe von Funktionen, die die Korrelation und Faltung von Bildern ermöglichen.

  • Die Funktion korrelate1d kann verwendet werden, um eine eindimensionale Korrelation entlang einer bestimmten Achse zu berechnen
  • Die Funktion zueinander in Beziehung stehen ermöglicht die mehrdimensionale Korrelation eines bestimmten Arrays mit dem angegebenen Kernel
  • Die Funktion convolve1d kann verwendet werden, um eine eindimensionale Faltung entlang einer bestimmten Achse zu berechnen
  • Die Funktion falten ermöglicht die mehrdimensionale Faltung eines bestimmten Arrays mit dem angegebenen Kernel

BEISPIEL:

import numpy als np aus scipy.ndimage import korrelate1d korrelate1d ([3,5,1,7,2,6,9,4], gewichte = [1,2])

AUSGABE: Array ([9, 13, 7, 15, 11, 14, 24, 17])

E / A-Datei:

Das Paket scipy.io bietet eine Reihe von Funktionen, mit denen Sie Dateien in verschiedenen Formaten wie MATLAB-Dateien, IDL-Dateien, Matrix Market-Dateien usw. verwalten können.

Um dieses Paket nutzen zu können, müssen Sie es wie folgt importieren:

importiere scipy.io als sio

Vollständige Informationen zum Unterpaket finden Sie im offiziellen Dokument unter Datei IO .

Dies bringt uns zum Ende dieses SciPy-Tutorials. Ich hoffe du hast alles klar verstanden. Stellen Sie sicher, dass Sie so viel wie möglich üben .

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses 'SciPy Tutorial' -Blogs und wir werden uns so schnell wie möglich bei Ihnen melden.

Um detaillierte Informationen zu Python und seinen verschiedenen Anwendungen zu erhalten, können Sie sich live anmelden mit 24/7 Support und lebenslangem Zugriff.