- Detaylar
- Son Güncelleme: 20 Nisan 2021
Python'da SciPy
Python'da SciPy matematiksel, bilimsel, mühendislik ve teknik problemleri çözmek için kullanılan açık kaynaklı bir kütüphanedir. Kullanıcıların verileri işlemesine ve çok çeşitli üst düzey Python komutlarını kullanarak verileri görselleştirmesine olanak tanır. SciPy, Python NumPy uzantısı üzerine kurulmuştur. SciPy ayrıca 'İç Çekme Pi' olarak telaffuz edilir.
SciPy'nin alt paketleri:
- Dosya girişi/çıkışı - scipy.io
- Özel fonksiyon - scipy.özel
- Lineer Cebir İşlemi - scipy.linalg
- İnterpolasyon - scipy.interpolate
- Optimizasyon ve uyum - scipy.optimize
- İstatistikler ve rastgele sayılar - scipy.stats
- Sayısal entegrasyon - scipy.integrate
- Hızlı Fourier dönüşümleri - scipy.fftpack
- Sinyal işleme - scipy.sinyal
- Görüntü işleme – scipy.ndimage
Bu Python SciPy eğitiminde şunları öğreneceksiniz:
- SciPy nedir?
- SciPy'yi neden kullanmalısınız?
- Numpy vs SciPy
- SciPy - Kurulum ve Ortam Kurulumu
- Dosya Giriş/Çıkış paketi:
- Özel İşlev paketi:
- SciPy ile Lineer Cebir:
- Ayrık Fourier Dönüşümü – scipy.fftpack
- SciPy'de Optimizasyon ve Uyum – scipy.optimize
- Nelder-Mead Algoritması:
- SciPy ile Görüntü İşleme - scipy.ndimage
SciPy'yi neden kullanmalısınız?
- SciPy, Bilimsel Hesaplama ile ilgili en yaygın sorunu çözmeye yardımcı olan çeşitli alt paketler içerir.
- Python'daki SciPy paketi, C/C++ veya Matlab için GNU Scientific Library'den sonra en çok kullanılan Scientific kütüphanesidir.
- Hızlı hesaplama gücünün yanı sıra kullanımı ve anlaşılması kolaydır.
- Bir dizi NumPy kitaplığı üzerinde çalışabilir.
Numpy vs SciPy
Dizi:
- Numpy, C ile yazılmıştır ve matematiksel veya sayısal hesaplama için kullanılır.
- Diğer Python Kütüphanelerinden daha hızlıdır.
- Numpy, Data Science'ın temel hesaplamaları yapması için en kullanışlı kütüphanedir.
- Numpy, sıralama, biçimlendirme, indeksleme gibi en temel işlemleri gerçekleştiren dizi veri türünden başka bir şey içermez.
Bilim:
- SciPy, NumPy'nin üzerine inşa edilmiştir
- Python'daki SciPy modülü, Linear Cebir'in tam özellikli bir sürümüdür, Numpy ise yalnızca birkaç özellik içerir.
- Çoğu yeni Veri Bilimi özelliği, Numpy yerine Scipy'de mevcuttur.
SciPy - Kurulum ve Ortam Kurulumu
SciPy'yi Windows'a pip |_+_| yoluyla da yükleyebilirsiniz.
Scipy'yi Linux'a yükleyin |_+_|
SciPy'yi Mac'e yükleyin |_+_|
SciPy Python'u öğrenmeye başlamadan önce, temel işlevlerin yanı sıra farklı NumPy dizisi türlerini de bilmeniz gerekir.
SciPy modüllerini ve Numpy'yi içe aktarmanın standart yolu: |_+_|
Dosya Giriş/Çıkış paketi:
Scipy, I/O paketi, Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV ve ikili format gibi farklı dosya formatlarıyla çalışmak için geniş bir fonksiyon yelpazesine sahiptir.
MatLab'da düzenli olarak kullanılan bir dosya formatı Python SciPy örneğini ele alalım: |_+_|
Çıktı:
Python3 -m pip install --user numpy scipy
Kod Açıklama
- 1. ve 2. satır: Temel SciPy kitaplığını Python'da I/O paketi ve Numpy ile içe aktarın.
- 3. satır : 4 x 4 boyutlu dizi oluştur
- 4. satır : Diziyi şurada depola örnek.mat dosya.
- 5. satır: Şuradan veri al: örnek.mat dosya
- 6. satır : Çıktıyı yazdırın.
Özel İşlev paketi
- scipy.özel paket matematiksel fiziğin sayısız fonksiyonlarını içerir.
- SciPy özel işlevi, Kübik Kök, Üstel, Log toplamı Üstel, Lambert, Permütasyon ve Kombinasyonlar, Gamma, Bessel, hipergeometrik, Kelvin, beta, parabolik silindir, Göreli Hata Üstel, vb. içerir.
- Tüm bu işlevlerin tek satırlık açıklaması için Python konsoluna şunu yazın:
sudo apt-get install python-scipy python-numpy
Kübik Kök Fonksiyonu:
Kübik Kök işlevi, değerlerin küp kökünü bulur.
Sözdizimi:
sudo port install py35-scipy py35-numpy
Örnek:
from scipy import special #same for other modules import numpy as np
Çıktı: dizi([3., 4.])
Üstel İşlev:
Üstel fonksiyon, 10**x eleman bazında hesaplar.
Örnek: |_+_|
Çıktı: [1.e+01 1.e+10]
Permütasyonlar ve Kombinasyonlar:
SciPy ayrıca Permütasyonları ve Kombinasyonları hesaplamak için işlevsellik sağlar.
kombinasyonlar - scipy.special.comb(N,k )
Örnek: |_+_|
Çıkış: 15.0
permütasyonlar –
import numpy as np from scipy import io as sio array = np.ones((4, 4)) sio.savemat('example.mat', {'ar': array}) data = sio.loadmat(‘example.mat', struct_as_record=True) data['ar']
Örnek: |_+_|
Çıkış: 20
Günlük Toplamı Üstel İşlev
Günlük Toplamı Üstel, toplam üstel giriş öğesinin günlüğünü hesaplar.
Sözdizimi : |_+_|
Bessel Fonksiyonu
N. tamsayı mertebesi hesaplama fonksiyonu
Sözdizimi : |_+_|
SciPy ile Lineer Cebir
- SciPy'nin Lineer Cebiri, BLAS ve ATLAS LAPACK kitaplıklarının bir uygulamasıdır.
- Lineer Cebir performansı BLAS ve LAPACK'e göre çok hızlıdır.
- Doğrusal cebir rutini iki boyutlu dizi nesnesini kabul eder ve çıktı da iki boyutlu bir dizidir.
Şimdi biraz test yapalım scipy.linalg,
Hesaplanıyor belirleyici iki boyutlu bir matrisin çizimi, |__+_|
Çıktı: -7.0
Ters Matris –
array([[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]])
Scipy'nin Ters Matrisi, herhangi bir kare matrisin tersini hesaplar.
Bakalım, |_+_|
Çıktı:
help(scipy.special) Output : NAME scipy.special DESCRIPTION ======================================== Special functions (:mod:`scipy.special`) ======================================== .. module:: scipy.special Nearly all of the functions below are universal functions and follow broadcasting and automatic array-looping rules. Exceptions are noted.
Özdeğerler ve Özvektör
scipy.linalg.eig ()
- Lineer cebirde en sık karşılaşılan problem özdeğerler ve özvektördür. sahip olmak () işlev.
- Şimdi özdeğerini bulalım ( x ) ve iki boyutlu bir kare matrisin özvektörüne karşılık gelir.
Örnek
scipy.special.cbrt(x)
Çıktı:
from scipy.special import cbrt #Find cubic root of 27 & 64 using cbrt() function cb = cbrt([27, 64]) #print value of cb print(cb)
Ayrık Fourier Dönüşümü – scipy.fftpack
- DFT, uzamsal verileri frekans verilerine dönüştürmek için kullanılan matematiksel bir tekniktir.
- FFT (Hızlı Fourier Dönüşümü), DFT'yi hesaplamak için bir algoritmadır.
- FFT, çok boyutlu bir diziye uygulanır.
- Frekans, belirli bir zaman diliminde sinyal veya dalga boyu sayısını tanımlar.
Örnek: Bir dalga alın ve Matplotlib kütüphanesini kullanarak gösterin. sin(20 × 2πt)'nin basit periyodik fonksiyon örneğini alıyoruz |_+_|
Çıktı:
Bunu görebilirsin. Frekans 5 Hz'dir ve sinyali 1/5 saniyede tekrar eder - belirli bir zaman periyodu olarak çağrıdır.
Şimdi bu sinüzoid dalgayı DFT uygulaması yardımıyla kullanalım. |_+_|
Çıktı:
- Çıktının tek boyutlu bir dizi olduğunu açıkça görebilirsiniz.
- Karmaşık değerler içeren girdi, iki nokta dışında sıfırdır.
- DFT örneğinde sinyalin büyüklüğünü görselleştiriyoruz.
SciPy'de Optimizasyon ve Uyum – scipy.optimize
- Optimizasyon, eğri uydurma, çok boyutlu veya skaler ve kök uydurmanın en aza indirilmesi için kullanışlı bir algoritma sağlar.
- bir örnek verelim bir Skaler Fonksiyon, minimum skaler fonksiyonu bulmak için .
from scipy.special import exp10 #define exp10 function and pass value in its exp = exp10([1,10]) print(exp)
Çıktı:
Optimizasyon başarıyla sonlandırıldı.
Geçerli fonksiyon değeri: -23.241676
Yinelemeler: 4
Fonksiyon değerlendirmeleri: 18
Gradyan değerlendirmeleri: 6
dizi([-1.67096375])
- Bu örnekte, başlangıç noktasından gradyan iniş algoritması yardımıyla optimizasyon yapılır.
- Ancak olası sorun, küresel minimum yerine yerel minimumdur. Global minimumun bir komşusunu bulamazsak, global optimizasyonu uygulamamız ve şu şekilde kullanılan global minimum fonksiyonunu bulmamız gerekir. havuz gezintisi() hangi yerel optimize ediciyi birleştirir.
optimize.basinhopping(işlev, 0)
Çıktı: |_+_|
Nelder-Mead Algoritması:
- Nelder-Mead algoritması metot parametresi üzerinden seçim yapar.
- Adil davranışlı işlev için en basit minimizasyon yolunu sağlar.
- Nelder – Mead algoritması gradyan değerlendirmelerinde kullanılmaz çünkü çözümün bulunması daha uzun sürebilir.
from scipy.special import comb #find combinations of 5, 2 values using comb(N, k) com = comb(5, 2, exact = False, repetition=True) print(com)Çıktı:
scipy.special.perm(N,k)
SciPy ile Görüntü İşleme - scipy.ndimage
- scipy.ndimage, çoğunlukla görüntü ile ilgili bir işlemi gerçekleştirmek için kullanılan SciPy'nin bir alt modülüdür.
- ndima 'n' boyutlu görüntü anlamına gelir.
- SciPy Görüntü İşleme, Geometrik dönüşüm (döndürme, kırpma, çevirme), görüntü filtreleme (keskin ve nosing), görüntü görüntüleme, görüntü bölümleme, sınıflandırma ve özellik çıkarma sağlar.
- ÇEŞİTLİ Paket SciPy'de görüntü işleme görevini gerçekleştirmek için kullanılabilecek önceden oluşturulmuş görüntüler içerir
Örnek: Resimlerin geometrik bir dönüşüm örneğini ele alalım |__+_|
Çıktı:
Şimdi biz Aşağı çevirmek mevcut resim: |_+_|
Çıktı:
Örnek: Scipy Kullanarak Görüntü Döndürme, |__+_|
Çıktı:
Scipy ile Entegrasyon – Sayısal Entegrasyon
- Analitik olarak entegrasyonun mümkün olmadığı herhangi bir fonksiyonu entegre ettiğimizde, sayısal entegrasyona dönmemiz gerekir.
- SciPy, işlevi sayısal entegrasyonla entegre etmek için işlevsellik sağlar.
- scipy.integrate kütüphanede tek integrasyon, ikili, üçlü, çoklu, Gauss quadrate, Romberg, Trapezoidal ve Simpson kuralları vardır.
Örnek: Şimdi bir örnek alın Tek Entegrasyon
Buraya ile üst sınırdır ve B alt sınırdır |_+_|
Çıktı:
(0.33333333333333337, 3.700743415417189e-15)
Burada fonksiyon, ilk değerin entegrasyon ve ikinci değerin integralde tahmini hata olduğu iki değeri döndürür.
Örnek: Şimdi bir SciPy örneği alın çift entegrasyon Aşağıdaki denklemin çift integralini buluruz,
from scipy.special import perm #find permutation of 5, 2 using perm (N, k) function per = perm(5, 2, exact = True) print(per)
Çıktı:
(3.0, 9.657432734515774e-14)
Yukarıdaki çıktının öncekiyle aynı olduğunu gördünüz.
Özet
- SciPy ('Sigh Pi' olarak telaffuz edilir) matematik, bilimsel hesaplama, Mühendislik ve teknik hesaplamada kullanılan Açık Kaynaklı Python tabanlı bir kitaplıktır.
- SciPy, Bilimsel Hesaplama ile ilgili en yaygın sorunu çözmeye yardımcı olan çeşitli alt paketler içerir.
- SciPy, NumPy'nin üzerine inşa edilmiştir
Paket ismi | Açıklama |
---|---|
scipy.io |
|
scipy.özel |
|
scipy.linalg |
|
scipy.interpolate |
|
scipy.optimize |
|
scipy.stats |
|
scipy.integrate |
|
scipy.fftpack |
|
scipy.sinyal |
|
scipy.ndimage |
|
Krishna Rungta hakkında
Krishna, bireysel katkıda bulunan, teknik lider ve bugün Guru99'un CEO'su olarak 15 yılı aşkın profesyonel yazılım geliştirme ve test deneyimine sahiptir.