Tutorial SciPy: Apa itu Python SciPy dan Bagaimana Cara Menggunakannya?



SciPy adalah pustaka Python yang digunakan untuk memecahkan masalah ilmiah dan matematika. NumPy vs SciPy. Basic, Special, Integration, Optimization, dll dengan contoh.

Matematika berurusan dengan sejumlah besar konsep yang sangat penting tetapi pada saat yang sama, rumit dan memakan waktu. Namun, menyediakan pustaka SciPy lengkap yang menyelesaikan masalah ini untuk kami. Dalam tutorial SciPy ini, Anda akan belajar bagaimana menggunakan library ini bersama dengan beberapa fungsi dan contohnya.

Sebelum melanjutkan, lihat semua topik yang dibahas dalam artikel ini:





bagaimana menemukan nomor terbesar dalam array java

Mari kita mulai. :)

Apa itu SciPy?

SciPy adalah pustaka Python open-source yang digunakan untuk memecahkan masalah ilmiah dan matematika. Itu dibangun di atas ekstensi dan memungkinkan pengguna untuk memanipulasi dan memvisualisasikan data dengan berbagai perintah tingkat tinggi. Seperti yang disebutkan sebelumnya, SciPy dibangun di atas NumPy dan oleh karena itu jika Anda mengimpor SciPy, tidak perlu mengimpor NumPy.



NumPy vs SciPy

Baik NumPy dan SciPy sama-sama digunakan untuk analisis matematika dan numerik yang digunakan. NumPy berisi data array dan operasi dasar seperti pengurutan, pengindeksan, dll sedangkan, SciPy terdiri dari semua kode numerik. Padahal NumPy menyediakan sejumlah yang dapat membantu menyelesaikan aljabar linier, transformasi Fourier, dll, SciPy adalah pustaka yang sebenarnya berisi versi berfitur lengkap dari fungsi-fungsi ini bersama dengan banyak lainnya. Namun, jika Anda melakukan analisis ilmiah menggunakan Python, Anda perlu menginstal NumPy dan SciPy karena SciPy dibangun di atas NumPy.

Subpaket di SciPy:

SciPy memiliki sejumlah subpaket untuk berbagai komputasi ilmiah yang ditunjukkan pada tabel berikut:

NamaDeskripsi
gugusAlgoritme pengelompokan
konstantaKonstanta fisik dan matematika
fftpackRutinitas Fast Fourier Transform
mengintegrasikanIntegrasi dan pemecah persamaan diferensial biasa
menambahInterpolasi dan smoothing splines
sayaMasukan dan keluaran
linalgAljabar linier
saya terbangPemrosesan citra berdimensi-N
odrRegresi jarak ortogonal
optimalkanPengoptimalan dan rutinitas pencarian root
sinyalPemrosesan sinyal
jarangMatriks renggang dan rutinitas terkait
spasialAlgoritma dan struktur data spasial
khususFungsi khusus
statistikDistribusi dan fungsi statistik

Namun, untuk penjelasan detailnya, Anda bisa mengikuti dokumentasi resmi .



Paket-paket ini perlu diimpor secara eksklusif sebelum digunakan. Sebagai contoh:

dari cluster impor scipy

Sebelum melihat masing-masing fungsi ini secara mendetail, pertama-tama mari kita lihat fungsi-fungsi yang umum di NumPy dan SciPy.

Fungsi dasar:

Interaksi dengan NumPy:

SciPy dibangun di atas NumPy dan oleh karena itu Anda dapat menggunakan fungsi NumPy itu sendiri untuk menangani array. Untuk mengetahui lebih dalam tentang fungsi-fungsi ini, Anda cukup menggunakan fungsi help (), info () atau source ().

Tolong():

Untuk mendapatkan informasi tentang fungsi apa pun, Anda dapat menggunakan Tolong() fungsi. Ada dua cara untuk menggunakan fungsi ini:

  • tanpa parameter apa pun
  • menggunakan parameter

Berikut adalah contoh yang menunjukkan kedua metode di atas:

dari bantuan cluster impor scipy (cluster) #with parameter help () #without parameter

Ketika Anda menjalankan kode di atas, bantuan pertama () mengembalikan informasi tentang gugus submodul. Help () kedua meminta pengguna untuk memasukkan nama modul, kata kunci, dll. Yang diinginkan pengguna untuk mencari informasi. Untuk menghentikan eksekusi fungsi ini, cukup ketik 'berhenti' dan tekan enter.

info ():

Fungsi ini mengembalikan informasi tentang yang diinginkan , modul, dll.

scipy.info (cluster)

sumber():

Kode sumber dikembalikan hanya untuk objek yang ditulis . Fungsi ini tidak mengembalikan informasi yang berguna jika metode atau objek ditulis dalam bahasa lain seperti C. Namun jika Anda ingin menggunakan fungsi ini, Anda dapat melakukannya sebagai berikut:

scipy.source (cluster)

Fungsi Khusus:

SciPy menyediakan sejumlah fungsi khusus yang digunakan dalam fisika matematika seperti eliptik, fungsi kenyamanan, gamma, beta, dll.Untuk mencari semua fungsi, Anda dapat menggunakan fungsi help () seperti yang dijelaskan sebelumnya.

Fungsi Eksponensial dan Trigonometri:

Paket Fungsi Khusus SciPy menyediakan sejumlah fungsi yang dengannya Anda dapat menemukan eksponen dan menyelesaikan masalah trigonometri.

Perhatikan contoh berikut:

CONTOH:

dari 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 ( d)

KELUARAN:

1000.0
8.0
1.0
0.7071067811865475

Ada banyak fungsi lain yang ada dalam paket fungsi khusus SciPy yang dapat Anda coba sendiri.

Fungsi Integrasi:

SciPy menyediakan sejumlah fungsi untuk menyelesaikan integral. Mulai dari integrator diferensial biasa hingga penggunaan aturan trapesium untuk menghitung integral, SciPy adalah gudang fungsi untuk menyelesaikan semua jenis masalah integral.

Integrasi Umum:

SiPy menyediakan fungsi bernama quad untuk menghitung integral dari fungsi yang memiliki satu variabel. Batasannya bisa ± & infin(± inf) untuk menunjukkan batas tak terbatas. Sintaks dari fungsi quad () adalah sebagai berikut:

SINTAKSIS:

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 , maksp1 = 50, limlst = 50)

Di sini, fungsi akan terintegrasi antara batas a dan b (bisa juga tak hingga).

CONTOH:

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

Pada contoh di atas, fungsi 'a' dievaluasi antara batas 0, 1. Saat kode ini dijalankan, Anda akan melihat keluaran berikut.

KELUARAN:

(3.9086503371292665, 4.3394735994897923e-14)

Fungsi Integral Ganda:

SciPy menyediakan dblquad.dll yang dapat digunakan untuk menghitung integral ganda. Integral ganda, seperti yang kita ketahui, terdiri dari dua variabel nyata. Fungsi dblquad () akan mengambil fungsi untuk diintegrasikan sebagai parameternya bersama dengan 4 variabel lain yang menentukan batas dan fungsi dy dan dx.

CONTOH:

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

KELUARAN:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy menyediakan berbagai fungsi lain untuk mengevaluasi integral rangkap tiga, integral n, Integral Romberg, dll yang dapat Anda jelajahi lebih jauh secara mendetail. Untuk menemukan semua detail tentang fungsi yang diperlukan, gunakan fungsi bantuan.

Fungsi Optimasi:

Scipy.optimize menyediakan sejumlah algoritme pengoptimalan yang umum digunakan yang dapat dilihat menggunakan fungsi bantuan.

Ini pada dasarnya terdiri dari yang berikut:

  • Minimisasi yang tidak dibatasi dan dibatasi dari fungsi skalar multivariat yaitu memperkecil (mis. BFGS, Newton Conjugate Gradient, Nelder_mead simplex, dll)
  • Rutinitas pengoptimalan global (mis. Differential_evolution, dual_annealing, dll)
  • Minimisasi kuadrat-terkecil dan pemasangan kurva (mis. Kuadrat-terkecil, fit_kurva, dll.)
  • Minimizer fungsi univariat skalar dan pencari root (mis. Meminimalkan_scalar dan root_scalar)
  • Pemecah sistem persamaan multivariat menggunakan algoritma seperti hybrid Powell, Levenberg-Marquardt.

Fungsi Rosenbrook:

Fungsi Rosenbrook ( rosen ) adalah masalah pengujian yang digunakan untuk algoritme pengoptimalan berbasis gradien. Ini didefinisikan sebagai berikut di SciPy:

rosen-Scipy tutorial-edurekaCONTOH:

impor numpy sebagai np dari scipy.optimize import rosen a = 1.2 * np.arange (5) rosen (a)

KELUARAN: 7371.0399999999945

Nelder-Mead:

ItuNelderMetode –Mead adalah metode numerik yang sering digunakan untuk mencari min / max suatu fungsi dalam ruang multidimensi. Dalam contoh berikut, metode meminimalkan digunakan bersama dengan algoritma Nelder-Mead.

CONTOH:

dari scipy import optimalkan a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimalkan.minimize (optimalkan.rosen, a, metode = 'Nelder-Mead') b.x

KELUARAN: larik ([0,96570182, 0,93255069, 0,86939478, 0,75497872, 0,56793357])

Fungsi Interpolasi:

Di bidang analisis numerik, interpolasi mengacu pada pembuatan titik data baru dalam satu set titik data yang diketahui. Pustaka SciPy terdiri dari sub-paket bernama scipy.interpolate yang terdiri darifungsi dan kelas spline, kelas interpolasi satu dimensi dan multi-dimensi (univariat dan multivariat), dll.

Interpolasi Univariat:

Interpolasi univariat pada dasarnya adalah suatu bidang yang berbentuk kurvamenemukan kurva yang memberikan kesesuaian yang tepat dengan serangkaian titik data dua dimensi. SciPy menyediakan interp1d fungsi yang dapat dimanfaatkan untuk menghasilkan interpolasi univariat.

CONTOH:

impor matplotlib.pyplot sebagai plt dari 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) # gunakan fungsi interpolasi yang dikembalikan oleh `interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

KELUARAN:

Interpolasi Multivariasi:

Interpolasi multivariasi(spasialinterpolasi) adalah sejenisinterpolasipada fungsi yang terdiri dari lebih dari satu variabel. Contoh berikut menunjukkan contoh interp2d fungsi.
Interpolasi melalui kisi 2-D menggunakan fungsi interp2d (x, y, z) pada dasarnya akan menggunakan larik x, y, z untuk mendekati beberapa fungsi f: 'z = f (x, y)' dan mengembalikan fungsi yang menggunakan metode panggilan interpolasi spline untuk menemukan nilai poin baru.
CONTOH:

dari scipy import interpolate import matplotlib.pyplot sebagai 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 = 'cubic') 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 ()

KELUARAN:

Fungsi Transformasi Fourier:

Analisis Fourier adalah metode yang berhubungan dengan mengekspresikan fungsi sebagai jumlah komponen periodik dan memulihkan sinyal dari komponen tersebut. Itu fft fungsi dapat digunakan untuk mengembalikandiskrit Transformasi Fourier dari urutan nyata atau kompleks.

CONTOH:

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

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

Demikian pula, Anda dapat mencari kebalikannya dengan menggunakan ifft berfungsi sebagai berikut:

CONTOH:

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

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

Fungsi Pemrosesan Sinyal:

Pemrosesan sinyal berkaitan denganmenganalisis, memodifikasi, dan mensintesis sinyal seperti suara, gambar, dll. SciPy menyediakan beberapa fungsi yang dapat digunakan untuk mendesain, memfilter, dan menginterpolasi data satu dimensi dan dua dimensi.

Penyaringan:

Dengan memfilter sinyal, pada dasarnya Anda menghapus komponen yang tidak diinginkan darinya. Untuk melakukan pemfilteran berurutan, Anda dapat menggunakan order_filter fungsi. Fungsi ini pada dasarnya melakukan pemfilteran berurutan pada array. Sintaks dari fungsi ini adalah sebagai berikut:

SINTAKSIS:
order_filter (a, domain, peringkat)

a = larik masukan berdimensi-N

domain = mask array yang memiliki jumlah dimensi yang sama dengan `a`

rank = Nomor non-negatif yang memilih elemen dari daftar setelah diurutkan (0 adalah yang terkecil diikuti oleh 1…)

CONTOH:

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

KELUARAN:

[[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.]
[limabelas. 16. 17. 18. 13.]
[dua puluh. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

Bentuk gelombang:

Subpaket scipy.signal juga terdiri dari berbagai fungsi yang dapat digunakan untuk menghasilkan bentuk gelombang. Salah satu fungsinya adalah kicauan . Fungsi ini adalah fgenerator kosinus sapuan requency dan sintaksnya adalah sebagai berikut:

SINTAKSIS:
kicauan (t, f0, t1, f1, metode = 'linier', phi = 0, vertex_zero = True)

dimana,

CONTOH:

dari scipy.signal import chirp, spectrogram import matplotlib.pyplot sebagai 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 ()

KELUARAN:

Aljabar linier:

Aljabar linier berhubungan dengan persamaan linier dan representasi mereka menggunakan ruang vektor dan matriks. SciPy dibangun di atasPerpustakaan ATLAS LAPACK dan BLAS dansangat cepat dalam memecahkan masalah yang berkaitan dengan aljabar linier. Selain semua fungsi dari numpy.linalg, scipy.linalg juga menyediakan sejumlah fungsi lanjutan lainnya. Juga, jika numpy.linalg tidak digunakan bersamaDukungan ATLAS LAPACK dan BLAS, scipy.linalg lebih cepat daripada numpy.linalg.

Menemukan Invers dari Matriks:

Secara matematis, kebalikan dari matriks Aadalah matriksnyaBseperti yangAB = Idimanasayaadalah matriks identitas yang terdiri dari matriks diagonal utama yang dilambangkan sebagaiB = A-satu. Di SciPy, pembalikan ini dapat diperoleh dengan menggunakan linalg.inv metode.

CONTOH:

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

KELUARAN:

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

Menemukan Penentu:

Nilai yang diperoleh secara aritmatika dari koefisien matriks dikenal sebagai determinan dari matriks persegi. Di SciPy, ini bisa dilakukan dengan menggunakan fungsi itu yang memiliki sintaks berikut:

SINTAKSIS:
det (a, overwrite_a = False, check_finite = True)
dimana,

a: (M, M) Adalah matriks persegi

overwrite_a (bool, opsional): Izinkan penimpaan data dalam file

check_finite (bool, opsional): Untuk memeriksa apakah matriks masukan hanya terdiri dari bilangan hingga

CONTOH:

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

KELUARAN: -5.0

Nilai Eigen Renggang:

Nilai eigen adalah sekumpulan skalar tertentu yang dihubungkan dengan persamaan linier. ARPACK menyediakan yang memungkinkan Anda menemukan nilai eigen (vektor eigen) dengan cukup cepat. Fungsionalitas lengkap ARPACK dikemas di dalamnyadua antarmuka tingkat tinggi yaitu scipy.sparse.linalg.eigs dan scipy.sparse.linalg.eigsh. eigs. Antarmuka eig memungkinkan Anda untuk menemukan nilai eigen dari matriks bujur sangkar nonsimetris nyata atau kompleks sedangkan antarmuka eigsh berisi antarmuka untuk matriks simetris nyata atau kompleks-hermitian.

Itu delapan fungsi memecahkan masalah nilai eigen umum untuk matriks Hermitian kompleks atau simetris nyata.

CONTOH:

dari scipy.linalg impor delapan impor numpy sebagai np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = delapan (A) print ('Nilai eigen yang dipilih:', a) print ('Complex ndarray:', b)

KELUARAN:

Nilai eigen yang dipilih: [-2.53382695 1.66735639 3.69488657 12.17158399]
Ndarray kompleks: [[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]]

Struktur Data Spasial dan Algoritma:

Data spasial pada dasarnya terdiri dari objek yang terdiri dari garis, titik, permukaan, dll. Paket scipy.spatial dari SciPy dapat menghitungDiagram Voronoi, triangulasi, dll menggunakan perpustakaan Qhull. Ini juga terdiri dari implementasi KDTree untuk kueri titik tetangga terdekat.

Triangulasi Delaunay:

Secara matematis, triangulasi Delaunay untuk himpunan titik diskrit dalam bidang adalah triangulasi sedemikian rupa sehingga tidak ada titik dalam himpunan titik yang diberikan.di dalam lingkaran luar segitiga apa pun.

CONTOH:

impor matplotlib.pyplot sebagai plt dari scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (points) #Delaunay object print (a) print (a.simplices) plt.triplot (poin [:, 0], poin [:, 1], a.simplices) plt.plot (poin [:, 1], poin [:, 0], 'o') plt.show ()

KELUARAN:

Fungsi Pemrosesan Gambar Multidimensi:

Pemrosesan gambar pada dasarnya berkaitan dengan melakukan operasi pada gambar untuk mengambil informasi atau untuk mendapatkan gambar yang ditingkatkan dari yang asli. Paket scipy.ndimage terdiri dari sejumlahfungsi pemrosesan dan analisis gambar yang dirancang untuk bekerja dengan array dengan dimensi yang berubah-ubah.

Konvolusi dan Korelasi:

SciPy menyediakan sejumlah fungsi yang memungkinkan korelasi dan konvolusi gambar.

  • Fungsinya berkorelasi1d dapat digunakan untuk menghitung korelasi satu dimensi di sepanjang sumbu tertentu
  • Fungsinya menghubungkan memungkinkan korelasi multidimensi dari setiap larik yang diberikan dengan kernel yang ditentukan
  • Fungsinya convolve1d dapat digunakan untuk menghitung konvolusi satu dimensi sepanjang sumbu tertentu
  • Fungsinya membelit memungkinkan konvolusi multidimensi dari setiap larik yang diberikan dengan kernel yang ditentukan

CONTOH:

impor numpy sebagai np dari scipy.ndimage import berkorelasi1d berkorelasi1d ([3,5,1,7,2,6,9,4], bobot = [1,2])

KELUARAN: larik ([9, 13, 7, 15, 11, 14, 24, 17])

File IO:

Paket scipy.io menyediakan sejumlah fungsi yang membantu Anda mengelola file dengan format berbeda seperti file MATLAB, file IDL, file Matrix Market, dll.

Untuk menggunakan paket ini, Anda perlu mengimpornya sebagai berikut:

impor scipy.io sebagai sio

Untuk informasi lengkap tentang sub-paket, Anda dapat merujuk ke dokumen resmi di Berkas IO .

Ini membawa kita ke bagian akhir Tutorial SciPy ini. Saya harap Anda memahami semuanya dengan jelas. Pastikan Anda berlatih sebanyak mungkin .

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Tutorial SciPy' dan kami akan menghubungi Anda kembali secepatnya.

Untuk mendapatkan pengetahuan mendalam tentang Python beserta berbagai aplikasinya, Anda dapat mendaftar secara langsung dengan dukungan 24/7 dan akses seumur hidup.

penggunaan iterator di java