Samouczek SciPy: Co to jest Python SciPy i jak z niego korzystać?



SciPy to biblioteka Pythona używana do rozwiązywania problemów naukowych i matematycznych. NumPy vs SciPy. Podstawowe, Specjalne, Integracja, Optymalizacja itp. Z przykładami.

Matematyka zajmuje się ogromną liczbą pojęć, które są bardzo ważne, ale jednocześnie złożone i czasochłonne. Jednak, zapewnia pełnoprawną bibliotekę SciPy, która rozwiązuje ten problem za nas. W tym samouczku SciPy dowiesz się, jak korzystać z tej biblioteki wraz z kilkoma funkcjami i ich przykładami.

Zanim przejdziesz dalej, spójrz na wszystkie tematy omówione w tym artykule:





Więc zacznijmy. :)

Co to jest SciPy?

SciPy to biblioteka Pythona typu open source, która służy do rozwiązywania problemów naukowych i matematycznych. Jest zbudowany na platformie rozszerzenie i pozwala użytkownikowi manipulować i wizualizować dane za pomocą szerokiej gamy poleceń wysokiego poziomu. Jak wspomniano wcześniej, SciPy opiera się na NumPy i dlatego jeśli importujesz SciPy, nie ma potrzeby importowania NumPy.



NumPy vs SciPy

Zarówno NumPy, jak i SciPy są używany do analizy matematycznej i numerycznej. NumPy zawiera dane tablicowe i podstawowe operacje, takie jak sortowanie, indeksowanie itp., Podczas gdy SciPy składa się z całego kodu numerycznego. Chociaż NumPy zapewnia wiele która może pomóc w rozwiązaniu algebry liniowej, transformacji Fouriera itp., SciPy jest biblioteką, która zawiera w pełni funkcjonalne wersje tych funkcji wraz z wieloma innymi. Jeśli jednak przeprowadzasz analizę naukową za pomocą Pythona, będziesz musiał zainstalować zarówno NumPy, jak i SciPy, ponieważ SciPy opiera się na NumPy.

Podpakiety w SciPy:

SciPy ma wiele podpakietów do różnych obliczeń naukowych, które przedstawiono w poniższej tabeli:

NazwaOpis
grupaAlgorytmy klastrowania
stałeStałe fizyczne i matematyczne
fftpackProcedury szybkiej transformaty Fouriera
zintegrowaćCałkowanie i rozwiązywanie równań różniczkowych zwyczajnych
interpolowaćInterpolacja i wygładzanie splajnów
jaWejście i wyjście
linalgAlgebra liniowa
LatamN-wymiarowe przetwarzanie obrazu
odrRegresja odległości ortogonalnej
optymalizowaćOptymalizacja i procedury wyszukiwania rootów
sygnałPrzetwarzanie sygnałów
rzadkiRzadkie macierze i związane z nimi procedury
przestrzennyStruktury i algorytmy danych przestrzennych
specjalnyFunkcje specjalne
statystykiRozkłady i funkcje statystyczne

Jednak aby uzyskać szczegółowy opis, możesz skorzystać z oficjalna dokumentacja .



Pakiety te należy zaimportować wyłącznie przed ich użyciem. Na przykład:

z klastra importu Scipy

Zanim przyjrzymy się szczegółowo każdej z tych funkcji, przyjrzyjmy się najpierw funkcjom, które są wspólne dla NumPy i SciPy.

Podstawowe funkcje:

Interakcja z NumPy:

SciPy opiera się na NumPy i dlatego możesz używać funkcji NumPy do obsługi tablic. Aby dowiedzieć się więcej o tych funkcjach, możesz po prostu skorzystać z funkcji help (), info () lub source ().

Wsparcie():

Aby uzyskać informacje o dowolnej funkcji, możesz skorzystać z Wsparcie() funkcjonować. Istnieją dwa sposoby wykorzystania tej funkcji:

  • bez parametrów
  • za pomocą parametrów

Oto przykład, który pokazuje obie powyższe metody:

z scipy import pomocy klastra (klaster) # z parametrem help () # bez parametru

Po wykonaniu powyższego kodu pierwsza pomoc () zwraca informacje o pliku grupa podmoduł. Druga pomoc () prosi użytkownika o podanie nazwy dowolnego modułu, słowa kluczowego itp., Dla którego użytkownik chce uzyskać informacje. Aby zatrzymać wykonywanie tej funkcji, po prostu wpisz „quit” i naciśnij Enter.

info ():

Ta funkcja zwraca informacje o żądanym , moduły itp.

scipy.info (klaster)

źródło():

Kod źródłowy jest zwracany tylko dla obiektów zapisanych w . Ta funkcja nie zwraca przydatnych informacji w przypadku, gdy metody lub obiekty są napisane w innym języku, takim jak C.Jeśli jednak chcesz skorzystać z tej funkcji, możesz to zrobić w następujący sposób:

scipy.source (klaster)

Funkcje specjalne:

SciPy zapewnia szereg funkcji specjalnych, które są używane w fizyce matematycznej, np. Eliptyczne, funkcje komfortowe, gamma, beta itp.Aby znaleźć wszystkie funkcje, możesz skorzystać z funkcji help (), jak opisano wcześniej.

Funkcje wykładnicze i trygonometryczne:

Pakiet funkcji specjalnych SciPy zapewnia szereg funkcji, dzięki którym można znaleźć wykładniki i rozwiązywać problemy trygonometryczne.

Rozważmy następujący przykład:

PRZYKŁAD:

from scipy import special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( re)

WYNIK:

1000,0
8.0
1.0
0,7071067811865475

W pakiecie funkcji specjalnych SciPy jest wiele innych funkcji, które możesz wypróbować samodzielnie.

Funkcje integracji:

SciPy zapewnia szereg funkcji do rozwiązywania całek. Począwszy od zwykłego integratora różniczkowego po stosowanie reguł trapezowych do obliczania całek, SciPy jest magazynem funkcji do rozwiązywania wszystkich typów problemów z całkami.

Ogólna integracja:

SiPy udostępnia funkcję o nazwie kwadrat obliczyć całkę funkcji, która ma jedną zmienną. Granice mogą być ± & infin(± inf), aby wskazać nieskończone granice. Składnia funkcji quad () jest następująca:

SKŁADNIA:

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)

Tutaj funkcja zostanie zintegrowana między granicami a i b (może być również nieskończona).

PRZYKŁAD:

from scipy import special from scipy import integrate a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

W powyższym przykładzie funkcja „a” jest oceniana między granicami 0, 1. Po wykonaniu tego kodu zobaczysz następujące dane wyjściowe.

jak zainstalować php w oknie

WYNIK:

(3,9086503371292665, 4,3394735994897923e-14)

Funkcja podwójnej całki:

SciPy zapewnia dblquad które można wykorzystać do obliczenia całek podwójnych. Jak wielu z nas wie, podwójna całka składa się z dwóch rzeczywistych zmiennych. Funkcja dblquad () przyjmie funkcję do zintegrowania jako swój parametr wraz z 4 innymi zmiennymi, które definiują granice i funkcje dy i dx.

PRZYKŁAD:

z scipy import integruj a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 integruj. dblquad (a, 0, 2, b, c)

WYNIK:

-1,3333333333333335, 1,4802973661668755e-14)

SciPy zapewnia różne inne funkcje do oceny całek potrójnych, całek n, całek Romberga itp., Które możesz zbadać bardziej szczegółowo. Aby znaleźć wszystkie szczegóły dotyczące wymaganych funkcji, skorzystaj z funkcji pomocy.

Funkcje optymalizacji:

Scipy.optimize zapewnia szereg powszechnie używanych algorytmów optymalizacji, które można zobaczyć za pomocą funkcji pomocy.

Zasadniczo składa się z następujących elementów:

  • Nieograniczona i ograniczona minimalizacja wielowymiarowych funkcji skalarnych, tj zminimalizować (np. BFGS, Newton Conjugate Gradient, Nelder_mead simplex itp.)
  • Globalne procedury optymalizacji (np. Różnica_ewolucja, podwójne_odgrzewanie itp.)
  • Minimalizacja metodą najmniejszych kwadratów i dopasowywanie krzywych (np. Najmniejsze kwadraty, dopasowanie_krzywej itp.)
  • Skalarne funkcje jednozmiennowe minimalizatory i wyszukiwarki korzeni (np. Minimal_scalar i root_scalar)
  • Rozwiązywanie wielowymiarowych układów równań przy użyciu algorytmów, takich jak hybryda Powell, Levenberg-Marquardt.

Funkcja Rosenbrook:

Funkcja Rosenbrooka ( różany ) jest problemem testowym używanym w algorytmach optymalizacji opartych na gradientach. W SciPy jest zdefiniowany w następujący sposób:

rosen-Scipy tutorial-edurekaPRZYKŁAD:

import numpy as np z scipy.optimize import rosen a = 1,2 * np.arange (5) rosen (a)

WYNIK: 7371.0399999999945

Nelder-Mead:

PlikNelder–Mead metoda jest metodą numeryczną często używaną do znajdowania wartości min / max funkcji w przestrzeni wielowymiarowej. W poniższym przykładzie metoda minimalizacji jest używana wraz z algorytmem Nelder-Mead.

PRZYKŁAD:

from scipy import optimize a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

WYNIK: tablica ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Funkcje interpolacji:

W dziedzinie analizy numerycznej interpolacja odnosi się do tworzenia nowych punktów danych w zestawie znanych punktów danych. Biblioteka SciPy składa się z podpakietu o nazwie scipy.interpolate, który składa się zfunkcje i klasy splajnów, jednowymiarowe i wielowymiarowe (jednowymiarowe i wielowymiarowe) klasy interpolacji itp.

Interpolacja jednowymiarowa:

Interpolacja jednowymiarowa jest w zasadzie obszarem dopasowania krzywej, któryznajduje krzywą, która zapewnia dokładne dopasowanie do serii dwuwymiarowych punktów danych. SciPy zapewnia interp1d funkcja, której można użyć do wykonania interpolacji jednowymiarowej.

PRZYKŁAD:

import matplotlib.pyplot as plt from scipy import 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) # użyj funkcji interpolacji zwróconej przez `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

WYNIK:

Interpolacja na wielu odmianach:

Interpolacja wielowymiarowa(przestrzennyinterpolacja) to rodzajinterpolacjana funkcjach, które składają się z więcej niż jednej zmiennej. Poniższy przykład ilustruje przykład interp2d funkcjonować.
Interpolacja na siatce 2-W za pomocą funkcji interp2d (x, y, z) w zasadzie użyje tablic x, y, z do przybliżenia niektórych funkcji f: „z = f (x, y)” i zwraca funkcję, której używa metoda wywołania interpolacja splajnu znaleźć wartość nowych punktów.
PRZYKŁAD:

from scipy import interpolate import matplotlib.pyplot as 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 = 'sześcienny') x2 = np. zakres (2,8) y2 = np. zakres (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

WYNIK:

Funkcje transformacji Fouriera:

Analiza Fouriera jest metodą, która polega na wyrażeniu funkcji jako sumy składowych okresowych i odtworzeniu sygnału z tych składowych. Plik fft funkcje mogą służyć do zwracania plikudyskretna transformata Fouriera sekwencji rzeczywistej lub złożonej.

PRZYKŁAD:

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

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

Podobnie możesz znaleźć odwrotność tego, używając ifft działają w następujący sposób:

PRZYKŁAD:

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

WYNIK: [1,5 + 0 j -0,5-0,5j -0,5 + 0 j -0,5 + 0,5j]

Funkcje przetwarzania sygnału:

Przetwarzanie sygnału zajmuje sięanalizowanie, modyfikowanie i syntetyzowanie sygnałów, takich jak dźwięk, obrazy itp. SciPy zapewnia pewne funkcje, za pomocą których można projektować, filtrować i interpolować dane jednowymiarowe i dwuwymiarowe.

Filtracja:

Filtrując sygnał, w zasadzie usuwasz z niego niechciane komponenty. Aby wykonać uporządkowane filtrowanie, możesz skorzystać z order_filter funkcjonować. Ta funkcja w zasadzie wykonuje uporządkowane filtrowanie w tablicy. Składnia tej funkcji jest następująca:

SKŁADNIA:
order_filter (a, domena, pozycja)

a = N-wymiarowa tablica wejściowa

domena = tablica maski mająca taką samą liczbę wymiarów jak „a”

rank = nieujemna liczba, która wybiera elementy z listy po ich posortowaniu (0 to najmniejsza, po której następuje 1…)

PRZYKŁAD:

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

WYNIK:

[[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.]
[piętnaście. 16. 17. 18. 13.]
[dwadzieścia. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Przebiegi:

Podpakiet scipy.signal składa się również z różnych funkcji, które można wykorzystać do generowania przebiegów. Jedną z takich funkcji jest ćwierkanie . Ta funkcja jest fGenerator cosinusa z przemiataniem zapotrzebowania i składnia jest następująca:

SKŁADNIA:
chirp (t, f0, t1, f1, method = ’linear’, phi = 0, vertex_zero = True)

gdzie,

PRZYKŁAD:

from scipy.signal import chirp, spectrogram import matplotlib.pyplot as 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 ('time in sec)') plt.show ()

WYNIK:

Algebra liniowa:

Algebra liniowa zajmuje się równaniami liniowymi i ich reprezentacjami za pomocą przestrzeni wektorowych i macierzy. SciPy jest zbudowany naBiblioteki ATLAS LAPACK i BLAS i jestniezwykle szybko w rozwiązywaniu problemów związanych z algebrą liniową. Oprócz wszystkich funkcji z numpy.linalg, scipy.linalg zapewnia również szereg innych zaawansowanych funkcji. Ponadto, jeśli numpy.linalg nie jest używany razem zObsługa ATLAS LAPACK i BLAS, scipy.linalg jest szybsza niż numpy.linalg.

Znajdowanie odwrotności macierzy:

Matematycznie odwrotność macierzy Ato macierzbtakie żeAB = Igdziejajest macierzą tożsamości składającą się z jedynek wzdłuż głównej przekątnej oznaczonej jakoB = A-jeden. W SciPy odwrotność tę można uzyskać za pomocą linalg.inv metoda.

PRZYKŁAD:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

WYNIK:

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

Znajdowanie determinantów:

Wartość wyprowadzona arytmetycznie ze współczynników macierzy jest znana jako wyznacznik macierzy kwadratowej. W SciPy można to zrobić za pomocą funkcji the który ma następującą składnię:

SKŁADNIA:
det (a, overwrite_a = False, check_finite = True)
gdzie,

a: (M, M) Jest macierzą kwadratową

overwrite_a (bool, opcjonalne): Zezwalaj na zastępowanie danych w pliku

check_finite (bool, opcjonalne): Aby sprawdzić, czy macierz wejściowa składa się tylko z liczb skończonych

PRZYKŁAD:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

WYNIK: -5,0

Rzadkie wartości własne:

Wartości własne to określony zestaw skalarów powiązanych z równaniami liniowymi. ARPACK umożliwia dość szybkie znajdowanie wartości własnych (wektorów własnych). Pełna funkcjonalność ARPACK jest spakowanadwa interfejsy wysokiego poziomu: scipy.sparse.linalg.eigs i scipy.sparse.linalg.eigsh. eigs. Interfejs eigs pozwala znaleźć wartości własne rzeczywistych lub złożonych niesymetrycznych macierzy kwadratowych, podczas gdy interfejs eigsh zawiera interfejsy dla rzeczywistych macierzy symetrycznych lub zespolonych-hermitowskich.

Plik osiem funkcja rozwiązuje uogólniony problem wartości własnej dla złożonej hermitowskiej lub rzeczywistej macierzy symetrycznej.

PRZYKŁAD:

z scipy.linalg import eigh import numpy as np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = ósemka (A) print ('Wybrane wartości własne:', a) print ('Złożona tablica:', b)

WYNIK:

Wybrane wartości własne: [-2,53382695 1,66735639 3,69488657 12,17158399]
Złożona tablica 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]]

Struktury i algorytmy danych przestrzennych:

Dane przestrzenne zasadniczo składają się z obiektów, które składają się z linii, punktów, powierzchni itp. Pakiet scipy.spatial SciPy może obliczaćDiagramy Voronoi, triangulacje itp. Przy użyciu biblioteki Qhull. Zawiera również implementacje KDTree dla zapytań o punkty najbliższego sąsiada.

Triangulacje Delaunaya:

Matematycznie, triangulacje Delaunaya dla zbioru dyskretnych punktów na płaszczyźnie to triangulacja taka, że ​​żaden punkt w podanym zbiorze punktów nie jestwewnątrz okręgu opisanego dowolnego trójkąta.

PRZYKŁAD:

import matplotlib.pyplot as plt from scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (punkty) #Delaunay obiekt print (a) print (a.simplices) plt.triplot (points [:, 0], points [:, 1], a.simplices) plt.plot (points [:, 1], points [:, 0], 'o') plt.show ()

WYNIK:

podnieś liczbę do potęgi w java

Wielowymiarowe funkcje przetwarzania obrazu:

Przetwarzanie obrazu zasadniczo polega na wykonywaniu operacji na obrazie w celu uzyskania informacji lub uzyskania ulepszonego obrazu z oryginalnego. Pakiet scipy.ndimage składa się z wielu plikówfunkcje przetwarzania i analizy obrazu zaprojektowane do pracy z tablicami o dowolnej wymiarowości.

Splot i korelacja:

SciPy zapewnia szereg funkcji, które umożliwiają korelację i splot obrazów.

  • Funkcja correlate1d można użyć do obliczenia jednowymiarowej korelacji wzdłuż danej osi
  • Funkcja korelat umożliwia wielowymiarową korelację dowolnej podanej tablicy z określonym jądrem
  • Funkcja convolve1d może służyć do obliczenia jednowymiarowego splotu wzdłuż danej osi
  • Funkcja splot umożliwia wielowymiarowe splatanie dowolnej tablicy z określonym jądrem

PRZYKŁAD:

import numpy as np from scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], weights = [1,2])

WYNIK: tablica ([9, 13, 7, 15, 11, 14, 24, 17])

Plik IO:

Pakiet scipy.io zapewnia szereg funkcji, które pomagają zarządzać plikami w różnych formatach, takich jak pliki MATLAB, pliki IDL, pliki Matrix Market itp.

Aby skorzystać z tego pakietu, musisz go zaimportować w następujący sposób:

import scipy.io jako sio

Pełne informacje na temat podpakietu można znaleźć w oficjalnym dokumencie pod adresem Plik IO .

To prowadzi nas do końca tego samouczka SciPy. Mam nadzieję, że wszystko zrozumiałeś. Upewnij się, że ćwiczysz jak najwięcej .

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu „SciPy Tutorial”, a skontaktujemy się z Tobą tak szybko, jak to możliwe.

Aby uzyskać dogłębną wiedzę na temat języka Python i jego różnych aplikacji, możesz zarejestrować się na żywo z całodobowym wsparciem i dożywotnim dostępem.