Python Numpy Kütüphanesi
Python Numpy Kütüphanesi

Python Numpy Kütüphanesi NumPy, Python programlama dili için bir kütüphane olup, büyük, çok boyutlu diziler ve matrisler için hesaplama kolaylığı sağlarken, bu dizilerde çalışmak için gerekli olan yüksek seviye ve karmaşık düzeyli matematiksel fonksiyonlarını içeren geniş bir koleksiyondur. İlk olarak 1995 tarihinde piyasaya sürülmüştür.
Numpy kütüphanesini kullanabilmek için ilk olarak terminale kurmanız gerekmektedir. Aşağıdaki kodu yazarak yükleme işlemini başlatabilirsiniz.
--- pip install numpy
Kurulumu yaptıktan sonra projemize numpy kütüphanesini ekleyerek işe başlayabiliriz.
import numpy as np
Numpy dizi (array) oluşturma:
import numpy as np
dizi=np.array([1,2,3,4,5,6,7,8])
print (dizi)
Yukarıdaki kod satırları ile 1*8 boyutunda bir dizi (array) oluşturabiliriz. Ekran çıktımız aşağıdaki gibi olacaktır.
[1 2 3 4 5 6 7 8]
Process finished with exit code 0
Oluşturduğumuz dizinin boyutunu öğrenmek istersek dizi.shape komutunu vermemiz yeterli olacaktır. Bu komut dizinin eleman sayısının yani 8 rakamını bize çıktı olarak verecektir.
2 Boyutlu Array Oluşturma:
2B array oluşturmak için aşağıdaki kodları inceleyelim:
import numpy as np
dizi2Boyut=np.array([[1,2,3,4],[5,6,7,8],[10,20,30,40]])
print (dizi2Boyut)
Burada dikkat etmemiz gereken önemli bir husus; array içerisnde yer alan iç içe geçmiş köşeli parantezlerdir. Ekran çıktısı aşağıdaki gibi olur.
[[ 1 2 3 4]
[ 5 6 7 8]
[10 20 30 40]]
Process finished with exit code 0
Görüldüğü üzere 2B array satır ve sütun lardan oluşmaktadır. Satır ve sütun numaraları 0 sıfır dan başlamaktadır. Örnek olarak sıfırıncı satırda [1 2 3 4] değerleri vardır.
Dizilerde işlemler
Bu bölümde dizilerle toplama, çıkarma gibi matematiksel işlemleri yapacağız. Ayrıca sık kullanılan metotlardan bahsedeceğiz.
import numpy as np
dizi1=np.array([10,20,30,40])
dizi2=np.array([4,8,12,16])
dizi_toplam = dizi1 + dizi2
dizi_fark = dizi1 - dizi2
print("Dizilerin Toplamı= " , dizi_toplam)
print("Dizilerin Farkı= " , dizi_fark)
Yukarıdaki kodları incelediğimizde dizi1 ve dizi2 isimli iki diziyi önce kendi aralarında topladık. Sonra farkını aldık. Bu işlemler sonucunda aşağıdaki çıktıyı alırız.
Dizilerin Toplamı= [14 28 42 56]
Dizilerin Farkı= [ 6 12 18 24]
Process finished with exit code 0
İki dizinin çarpımı
import numpy as np
dizi1=np.array([10,20,30,40])
dizi2=np.array([4,8,12,16])
sonuc= dizi1*dizi2
print (sonuc)
Yukarıdaki kodlara bakacak olursak iki adet dizinin çarpımını çıktı olarak bize verir bu diziler tek boyutlu ve her dizinin elemanları kendi aralarında çarpılarak yeni bir dizi elde edilir. Aşağıda ekran çıktısı verilmiştir.
[ 40 160 360 640]
Process finished with exit code 0
Eğer dizilerimiz 2 Boyutlu olursa çarpma işlemi nasıl olur? Şimdi bu sorunun cevabını arayalım.
Hadamard Çarpımı
import numpy as np
dizi1=np.array([[10,20,30,40],[1,2,3,4]])
dizi2=np.array([[4,8,12,16],[1,2,3,4]])
sonuc= dizi1*dizi2
print (sonuc)
2 Boyutlu iki adet matris oluşturduk. Bu matrisleri birbiri ile çarpınca aşağıdaki ekran çıktısını elde ederiz. dizi1 in ilk satırı ile dizi2 nin ikinci satırı birbirleri ile çarpılır. Aynı şekilde diğer satırlarda indis numarası ile eşleşerek birbirleri ile çarpılırlar.
[[ 40 160 360 640]
[ 1 4 9 16]]
Process finished with exit code 0
Matris Çarpımı
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
dizi2=np.array([[2,4,6],[1,2,3]])
print (dizi1)
print("----------")
print(dizi2.T)
print("----------")
sonuc= dizi1.dot(dizi2.T)
print (sonuc)
Dizi1 ve dizi2 matrisleri 3*2 lik matrisler olduğu için bu halleriyle matris çaprımı yapılamazlar. Bu sebeple dizi2 matrisini devirmemiz gerekiyor. Dizi2 matrisini devirirsek yani Transpoze sini alırsak satırlar sütuna, sütunlar ise satıra dönüşür.
Bu işlemden sonra dizi1 matrisi ile dizi2 matrisinin devrilmiş halini çarpma işlemine sokabiliyoruz. Aşağıdaki ekran görüntüsüne bakınız:
[[10 20 30]
[ 1 2 3]]
----------
[[2 1]
[4 2]
[6 3]]
----------
[[280 140]
[ 28 14]]
Process finished with exit code 0
Görüldüğü üzere dizi2 matrisi transpoze oldu ve bu şekilde dizi1 matrisi ile çarpıldı. 1.matrisin ilk satırı ile 2.matrisin ilk sütunu çarpımları toplanır. (10*2+20*4+30*6) daha sonra çıkan sonuç yani 280 sonuça yazılır. İlk matrisin birinci sutunu aynı işlem ile 2. matrisin 2. sütunu ile tekrar çarpılarak sonuç bulunur.
Dizilerin elemanlarını toplama:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
print(dizi1.sum())
2 boyutlu dizi1 matrisinin bütün elemanlarını toplar ve ekrana yazdırır. Aşağıda ekran görüntüsü bulunmaktadır.
66
Process finished with exit code 0
Dizinin sütunlarını toplama:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
print(dizi1.sum(axis=0))
[11 22 33]
Process finished with exit code 0
Dizinin satırlarını toplama:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
print(dizi1.sum(axis=1))
[60 6]
Process finished with exit code 0
Dizi elemanlarının karekökünü bulma:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
print(np.sqrt(dizi1))
Yukarıdaki kod yapısında, 3*2 lik matriste bulunan bütün elemanların kareköklerini bulan bir Numpy fonksiyonu kullanılmıştır. np.sqrt fonksiyonu bütün elemanların karekökünü alır.
[[3.16227766 4.47213595 5.47722558]
[1. 1.41421356 1.73205081]]
Process finished with exit code 0
Dizi elemanlarının karesini bulma:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
print(np.square(dizi1))
Yukarıdaki kod yapısında, 3*2 lik matriste bulunan bütün elemanların karesini bulan bir Numpy fonksiyonu kullanılmıştır. np.square fonksiyonu bütün elemanların karesini alır.
[[100 400 900]
[ 1 4 9]]
Process finished with exit code 0
Dizi İndisleme
import numpy as np
dizi1=np.array([10,20,30,40,50,60,70])
print (dizi1[0]) #dizinin 0.indeksini ekrana yazdırır
print (dizi1[0:4]) ##dizinin ilk 4 elemanını ekrana yazdırır
print(dizi1[::-1]) # dizinin tersini alır
Dizilerin indis numaraları ile istediğimiz elemanı elde edebiliriz. İndis numaralarının 0 sıfırdan başladığını unutmayalım. Yukarıdaki kodların ekran çıkısı aşağıdaki şekilde olur.
10
[10 20 30 40]
[70 60 50 40 30 20 10]
Process finished with exit code 0
Dizileri İstifleme:
Alt alta istifleme:
2 adet 2 boyutlu diziyi alt alta ekleyerek tek bir diziye dönüştürebiliriz. Burada dikkat edilmesi gereken nokta iki diziyi toplamıyoruz. 2 diziyi alt alta ekleyerek istifleme işlemi gerçekleştirebiliyoruz.
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
dizi2=np.array([[2,4,6],[1,2,3]])
dizi_alt=np.vstack((dizi1,dizi2))
print(dizi_alt)
Yukarıdaki kodlarda vstack fonksiyonu (vertical) dikey yani alt alta ekleme işlemi yapıyor. Çıktı aşağıdaki gibi olur.
[[10 20 30]
[ 1 2 3]
[ 2 4 6]
[ 1 2 3]]
Process finished with exit code 0
Yan yana istifleme:
import numpy as np
dizi1=np.array([[10,20,30],[1,2,3]])
dizi2=np.array([[2,4,6],[1,2,3]])
dizi_alt=np.hstack((dizi1,dizi2))
print(dizi_alt)
Yukarıdaki kodlarda hstack fonksiyonu (horizontal) yatay yani yan yana ekleme işlemi yapıyor. Çıktı aşağıdaki gibi olur.
[[10 20 30 2 4 6]
[ 1 2 3 1 2 3]]
Process finished with exit code 0