Modüller
Bu bölümde math, cmath ve numpy modüllerini inceleyeceğiz.
math Modülü
Basit matematiksel işlemleri ve sabitleri betiğe çağırmak için import math as mt komutunu yazmak gerekir. Bu komutla math modülündeki her fonksiyonu ve değişkeni mt isimlendirmesi ile çağırabiliriz.
math modülü python dilinin standart kütüphanesidir. Yani python dilini bilgisayarınıza kurduğunuzda bu modülü de bilgisayarınıza kurmuş olursunuz.
math modülünün içerisindekilere tüm fonksiyonlara ve değişkenlere erişmek için lütfen bu modülün websitesini ziyaret ediniz. Betik içerisinden de print(dir(mt)) komutu yardımıyla bakabilirsiniz.
Önemli: sin gibi açi değişkeni ile çalışan fonksiyonlar, aksi belirtilmedikçe radyan birimi ile çalışır.
cmath Modülü
cmath modülü, sanal sayı değişkenleri ile çalışabilen math modülündeki fonksiyonlarına sahiptir. Ek olarak açıları polar koordinatlara çevirme gibi fonksiyonlara da sahiptir. Ayrıntılı dökümantasyonu için websitesini ziyaret ediniz.
Tıpkı math modülü gibi cmath de python dilinin standart kütüphanesidir.
İçeriğini görmek için dir() fonksiyonunu ile bakalım.
import cmath as cmt
print(dir(cmt)) # cmath modülünün içindeki fonksiyonları/değişkenleri listeler
# ÖRNEKLER
print(cmt.polar(4+3j)) # 4+3j sayısının polar koordinatlarını hesaplar. (r, theta)
print(cmt.phase(4+3j)) # 4+3j sayısının theta değerini hesaplar
print(cmt.rect(5, 0.6435011087932844)) # 5 ve 0.9272952180016122 değerlerinin karşılığı olan (x,y) sayısını hesaplarnumpy Modülü
numpy modülü, matematiksel işlemleri ve veri analizi için kullanılan bir modüldür. Bu modülü kullanmak için import numpy as np komutunu yazmak gerekir. Bu komutla numpy modülündeki her fonksiyonu ve değişkeni np isimlendirmesi ile çağırabiliriz.
numpy modülü standart bir modül değildir. Yani bu modülü çağırmak için öncelikle bilgisayarınıza kurmanız gerekir. Bu modülü kurmak için pip3 install numpy komutunu kullanabilirsiniz.
Bu derste bir modül np olarak adlandırılmışsa numpy modülüne ait olduğunu anlayabilirsiniz.
import numpy as np
print(dir(np)) # numpy modülünün içindeki fonksiyonları/değişkenleri listeler
print(dir(np.linalg)) # numpy/linalg modülünün içindeki fonksiyonları/değişkenleri listelerNumpy Arrayler (Diziler)
Arrayler (diziler) numpy modülünün temel veri yapısıdır. Arrayler, “genellikle” birbirine benzer verileri tutmak için kullanılır.
Arrayler ile ilgili bazı temel kavramlar gibidir:
- Numpy arrayi oluşturmak için
np.array()fonksiyonunu kullanırız. Bu fonksiyonun içerisine bir liste veya tuple veririz. Bu fonksiyon bize bir array döndürür.- Bir boyutlu array:
np.array([1,2,3,4,5]) - İki boyutlu array veya MATRIX:
np.array([[1,2,3],[4,5,6], [7,8,9]])2.
- Bir boyutlu array:
- Boyut: Bir boyutlu arrayler için kaç elemanlı olduğu, iki boyutlu arrayler için arrayin içerisinde kaç tane array olduğunu ve eleman sayısını belirtir.
Numpy Arraylerinin Oluşturulması
import numpy as np
# ÖRNEKLER
print('1 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma')
arr1d= np.array([1,2,3,4,5,6,7,8,9,10])
print(arr1d)
print('----------------------------------------')
print('1 Boyutlu, n Tane Sıfırdan Oluşan Array Oluşturma')
arr1d= np.zeros(10)
print(arr1d)
print('----------------------------------------')
print('1 Boyutlu, n Tane Birden Oluşan Array Oluşturma')
arr1d= np.ones(10)
print(arr1d)
print('----------------------------------------')
print("1 Boyutlu, Sıfırdan Başlayıp n'e kadar Sayılardan Array Oluşturma")
arr1d= np.arange(10)
print(arr1d)
# np.arange(2,10) 2'den başlayıp 10'a kadar sayılar
# np.arange(2,10,2) 2'den başlayıp 10'a kadar 2'şer 2'şer sayılar
print('----------------------------------------')
print('2 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma')
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr2d)
print('----------------------------------------')
print('2 Boyutlu, n Tane Sıfırdan Oluşan Array Oluşturma')
arr2d= np.zeros((3,3))
print(arr2d)
print('----------------------------------------')
print('2 Boyutlu, n Tane Birden Oluşan Array Oluşturma')
arr2d= np.ones((3,3))
print(arr2d)
print('----------------------------------------')
print('2 Boyutlu, n x n Boyttlu Birim Matris')
arr2d= np.eye(3)
print(arr2d)
#print(np.identity(3))
#print(arr2d)
print('----------------------------------------')
print('Arrayin Boyutunu Öğrenme')
arr2d= np.ones((3,7))
print(arr2d.shape)
print(np.shape(arr2d))
print('----------------------------------------')Numpy Arraylerinin Elemanlarına Erişim
import numpy as np
# ÖRNEKLER
#! 2 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr2d)
print('arr2d[0,0]:\n', arr2d[0,0]) # 1. satır, 1. sütun
print('arr2d[0,1]:\n', arr2d[0,1]) # 1. satır, 2. sütun
print('arr2d[:,0]:\n', arr2d[:,0]) # Tüm satırlar, 1. sütun
print('arr2d[0,:]:\n', arr2d[0,:]) # 1. satır, Tüm sütunlar
print('arr2d[0,0:2]:\n', arr2d[0,0:2]) # 1. satır, 1. ve 2. sütunlar
print('arr2d[0:2,0:2]:\n', arr2d[0:2,0:2]) # 1. ve 2. satırlar, 1. ve 2. sütunlar
arr2d[0]= [10,11,12]
print("arr2d'birinci satırı değişti:\n", arr2d) # 1. satırı değişti.Numpy Arrayleri ile Matematiksel İşlemler
import numpy as np
# ÖRNEKLER
#! 2 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d:\n',arr2d)
#! Çarpma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d*2 :\n', arr2d*2) # Tüm elemanları 2 ile çarpar
#! Toplama İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d+2 :\n', arr2d+2) # Tüm elemanlara 2 ekler
#! Çıkarma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d-2 :\n', arr2d-2) # Tüm elemanlardan 2 çıkarır
#! Bölme İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d/2 :\n', arr2d/2) # Tüm elemanları 2'ye böler
#! Üs Alma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d**2 :\n', arr2d**2) # Tüm elemanları karesini alır
#! Karekök Alma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('np.sqrt(arr2d) :\n', np.sqrt(arr2d)) # Tüm elemanların karekökünü alır
#! Üslü Sayı Alma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('np.exp(arr2d) :\n', np.exp(arr2d)) # Tüm elemanların üslü sayısını alır
#! Logaritma Alma İşlemi
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('np.log(arr2d) :\n', np.log(arr2d)) # Tüm elemanların logaritmasını alır
#! Sinüs Alma İşlemi (Radyan)
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('np.sin(arr2d) :\n', np.sin(arr2d)) # Tüm elemanların sinüsünü alır
#! Sinüs Hiperbolik Alma İşlemi (Radyan)
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('np.sinh(arr2d) :\n', np.sinh(arr2d)) # Tüm elemanların sinüs hiperboliklerini alırNumpy Arrayleri (Matrisleri) ile İllgili Bazı Fonksiyonlar
import numpy as np
# ÖRNEKLER
#! 2 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d:\n',arr2d)
#! Köşegen Elemanları
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d.diagonal() :\n', arr2d.diagonal()) # Diagonal elemanları yazdırır
#print('arr2d.diagonal(1) :\n', np.diag(arr2d))
#! İzi (trace)
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
print('arr2d.trace() :\n', arr2d.trace()) # Diagonal elemanların toplamını yazdırır
#print('arr2d.trace() :\n', np.trace(arr2d)) # Diagonal elemanların toplamını yazdırır
#! Transpoz
arr2d= np.array([[1,2,3],[4,5,6],[7,8,9]])
#print('arr2d.T :\n', arr2d.T) # Transpozunu alır
print('arr2d.T :\n', np.transpose(arr2d)) # Transpozunu alırNumpy Arraylerinin İşlemleri
import numpy as np
# ÖRNEKLER
print("2 Boyutlu Arrayin Elemanlarını Yazarak Oluşturma")
arr2d_1= np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2d_2= np.array([[10,11,12],[13,14,15],[16,17,18]])
print("arr2d_1:\n",arr2d_1)
print("arr2d_2:\n",arr2d_2)
print("İki Matrisi Yıldız (*) İle Çarpma")
print("arr2d_1*arr2d_2:\n",arr2d_1*arr2d_2) # İki matrisi eleman eleman çarpar
print("İki Matrisi Matrisi Çarpımı ile Çarpma")
arr2d_1= np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2d_2= np.array([[10,11,12],[13,14,15],[16,17,18]])
print("arr2d_1 @ arr2d_2:\n",arr2d_1 @ arr2d_2) # İki matrisi matris çarpımı ile çarpar
print("Bir Satır Vektörü ile Bir Sütun Vektörü Çarpma")
arr1d_1= np.array([1,2,3])
arr2d_1= np.array([[1,2,3],[4,5,6],[7,8,9]])
print("arr1d_1:\n",arr1d_1)
print("arr2d_1:\n",arr2d_1)
print("arr1d_1 @ arr2d_1:\n",arr1d_1 @ arr2d_1) # Bir satır vektörü ile bir sütun vektörü çarparmatplotlib Modülü
matplotlib modülü en temelde python programlama dilini kullanarak çizim yapılmasına olanak kılan modüldür. İki boyutlu, üç boyutlu veya animasyon yapma gibi birçok fonksiyonu bulunsa da bu ders boyunca çoğunlukla iki boyutlu grafik çizimek için kullanacağız.
matplotlib modülü python’un standart bir paketi değildir ve ekstra yüklenmesi gerekmektedir.
Bu ders boyunca matplotlib modülünü plt ismiyle kullanacağız. Bu isimlendirme matplotlib modülünün genel olarak kullanılan bir isimlendirme şeklidir.
Ayrıntılı bilgi için matplotlib sitesine bakabilirsiniz.
import numpy as np
import matplotlib.pyplot as plt
# Örnek
xAxis = np.arange(0, 6.2, 0.2) # 0'dan 6.2'ye kadar 0.2'şer artan bir dizi
yAxis_1 = np.sin(xAxis) # sinüsü alınmış bir dizi
yAxis_2 = np.cos(xAxis) # cosinüsü alınmış bir dizi
# Çizim
plt.plot(xAxis, yAxis_1, 'r', label='sin(x)') # 'r' Kırmızı
plt.plot(xAxis, yAxis_2, 'k', label='cos(x)') # 'k' Siyah
plt.legend() # etiketleri göster
plt.show() # çizimi göster
plt.close() # çizimi kapatmatplotlib.pyplot Modülündeki Bazı Fonksiyonlar ve Özellikler
matplotlib.pyplot modülü içerisindeki bazı fonksiyonlar ve özellikler aşağıdaki gibidir.
plt.plot(): Çizim yapmak için kullanılır.plt.plot(xAxis, yAxis):xAxisveyAxisdeğerlerini kullanarak çizim yapar.plt.plot(xAxis, yAxis, 'r'):rparametresi çizimin rengini kırmızı yapar. Temel renkler:r(kırmızı),g(yeşil),b(mavi),c(turkuaz),m(mor),y(sarı),k(siyah).plt.plot(xAxis, yAxis, 'r', label='line1'):labelparametresi çizimin ismini belirler.plt.plot(xAxis, yAxis, 'r', label='line1', linewidth=2):linewidthparametresi çizimin kalınlığını belirler.plt.plot(xAxis, yAxis, 'r', label='line1', linewidth=2, marker='o'):markerparametresi çizimin noktalarını belirler. Temel nokta tipleri:o(daire),s(kare),^(üçgen),*(yıldız),+(artı),x(çarpı).plt.plot(xAxis, yAxis, 'r', label='line1', linewidth=2, linestyle='--'):linestyleparametresi çizimin çizgi tipini belirler. Temel çizgi tipleri:--(kesikli),:(noktalı),-(kesizsiz),-.(kesikli-noktalı).
plt.xlabel('Uzaklık [km]'):xAxisismini belirlemek için kullanılır.plt.ylabel('Hız [km/s]'):yAxisismini belirlemek için kullanılır.plt.title('Hız-Zaman Grafiği'): Grafiğin başlığını belirlemek için kullanılır.plt.legend(): Çizimlerin isimlerini belirlemek için kullanılır.plt.grid(): Çizimlerin arka planına ızgara çizmek için kullanılır.plt.show(): Çizimleri göstermek için kullanılır.plt.savefig('hiz-zaman.png'): Çizimleri kaydetmek için kullanılır.hiz-zaman.pngdosyası çalıştırılan dizinde oluşturulur.plt.xscale('log'):xAxisdeğerlerinin logaritmik ölçekte gösterilmesini sağlar.plt.yscale('log'):yAxisdeğerlerinin logaritmik ölçekte gösterilmesini sağlar.plt.xlim(0, 100):xAxisdeğerlerinin 0 ile 100 arasında gösterilmesini sağlar.plt.ylim(0, 100):yAxisdeğerlerinin 0 ile 100 arasında gösterilmesini sağlar.
Problemler
Problem 1
- Bir boyutlu arrayler
- 80’den 250’ye kadar sayıları ikişer ikişer giden bir array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
arr1d_1olsun. - Bu arrayin elemanlarının toplamını
np.sum()fonksiyonu ile bulunuz ve ekrana yazdırınız. - Bu arrayin elemanlarının ortalamasını
np.mean()fonksiyonu ile bulunuz ve ekrana yazdırınız. - Bu arrayin elemanlarının toplamını
fordöngüsü kullanarak bulunuz ve ekrana yazdırınız.
- 80’den 250’ye kadar sayıları ikişer ikişer giden bir array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
- İki boyutlu arrayler
- 1 ile 100 arasındaki sayıları 10x10’luk bir matris haline getiriniz ve ekrana yazdırınız. Bu matrisin adı
arr2d_1olsun. - Bu matrisin elemanlarının toplamını
np.sum()fonksiyonu ile bulunuz ve ekrana yazdırınız. - Bu matrisin elemanlarının toplamını
fordöngüsü kullanarak bulunuz ve ekrana yazdırınız.
- 1 ile 100 arasındaki sayıları 10x10’luk bir matris haline getiriniz ve ekrana yazdırınız. Bu matrisin adı
- Bir boyutlu ve iki boyutlu arraylerde matematiksel işlemler
- Sadece 2’lerden oluşan 3 elemanlı bir boyutlu array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
arr1d_2olsun. - 1’den 6’ya kadar olan sayıları ile 3x2’lük bir matris oluşturunuz ve ekrana yazdırınız. Bu matrisin adı
arr2d_2olsun. arr1d_2arrayinin boyutunu ekrana yazdırınız.arr2d_2matrisinin boyutunu ekrana yazdırınız.- Bu iki arrayin matris çarpımını yapınız ve ekrana yazdırınız.
- Sadece 2’lerden oluşan 3 elemanlı bir boyutlu array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
- Bir boyutlu sütun array (Vektör)
- Bir boyutlu, elemanları 1’den 3’e kadar olan sütun array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
vec_1olsun. - 1’den 6’ya kadar olan sayıları ile 2x3’lük bir matris oluşturunuz ve ekrana yazdırınız. Bu matrisin adı
arr2d_3olsun. - Bu iki arrayin matris çarpımını yapınız ve ekrana yazdırınız.
- Bir boyutlu, elemanları 1’den 3’e kadar olan sütun array oluşturunuz ve ekrana yazdırınız. Bu arrayin adı
Problem 2
polinom1adındaxdeğişkeni ile çalışan bir fonksiyon oluşturun.polinom1fonksiyonu \(x^{2}-1\) değerini döndürsün.- Fonksiyon tanımlamasını bitirdikten sonra
if __name__ == '__main__':bloğu yaratın. ÖNEMLİ: Artık her çalıştırılabilir dosyada bu bloğu kullanacağız. if __name__ == '__main__':bloğu içerisindexAxisdeğişkeni için -3 ile 3 arasında 1000 adet değer oluşturun.- Bu
xAxisdeğişkeni içinpolinom1fonksiyonunu çağırın ve dönen sonucuyAxisdeğişkenine atayın. xAxisveyAxisdeğerlerini kullanarak grafik çizin.- Çizdiğiniz grafikte
xAxisveyAxisisimlerini belirleyin. - Arkaplan ızgarasını çizin.
- Bu grafiği kapatın.
- Yeni bir grafik çizdirin. Bu grafik için
xAxisveyAxisdeğerlerini kullansın ama bu kesikli cizgi seklinde olsun. - Yeni grafiği
polinom1.pngdosyası olarak kaydedin. - Bu grafiği kapatın.