Python NumPy Modülü
NumPy Modülünde dikkat etmemiz gereken en önemli konu,Python List yapılarında farklı türde veriler tutabiliyorken, NumPy dizilerinde tek tipte veriler tutuyor olmasıdır. Örneğin int,float,complex gibi… Bu duruma özen göstrilmeden karakter dizileri ile intager değerler aynı diziye eklendiğinde, intager değerlerde string veri türüne çevirilecektir.
Şimdi öncelikli olarak Numpy Modülü‘müzü çalışma sayfamıza ekleyelim ve bir dizi değişken oluşturalım.
1 2 3 4 5 | import numpy as np dizi_1 = np.array([1,2,3,4,5,6]) print(dizi_1) ###########Ekran Çıktısı############## #[1 2 3 4 5 6] |
Yukarıda NumPy Modülü‘müzü sayfaya çağırdık ve as
operatörü ile np
olarak kısaltık.
Şimdi ise Python List olarak oluşturduğumuz bir diziyi NumPy Dizi haline getirelim.
1 2 3 4 5 6 7 8 9 | liste=["Çağlar","Kemal","Çiğdem","Halil"] dizi_2 = np.array(liste) print(dizi_2) print(type(dizi_1),type(liste)) ###########Ekran Çıktısı############## #['Çağlar' 'Kemal' 'Çiğdem' 'Halil'] #<class 'numpy.ndarray'> <class 'list'> |
Şimdi ise NumPy diziler ile toplam ve çıkarma yaplım.
1 2 3 4 5 6 7 8 9 | dizi_3 = np.array([10,20,30,40]) dizi_4 = np.array([1,2,3,4]) cikar = dizi_3 - dizi_4 topla = dizi_3 + dizi_4 print(cikar) print(topla) ###########Ekran Çıktısı############## #[ 9 18 27 36] #[11 22 33 44] |
NumPy ile Pyton List yapılarını bir birinden ayıran özellik yukarıdaki işlemde gerçekleştirilmiştir. Pythonda iki list veriye +
operatörü kullandığınızda birleştirme işlemi yaparken NumPy‘da ise toplama işlemi yapmaktadır.Aşağıdaki örnekle bunu daha iyi anlayacağız.
1 2 3 4 5 6 | liste_1=[1,2,3,4] liste_2=[5,6,7,8] print(liste_1 + liste_2) ###########Ekran Çıktısı############## #[1, 2, 3, 4, 5, 6, 7, 8] |
İsterseniz sizlerle şimdide NumPy Modülü ile vucut kitle indeksi hesaplayalım. Elimizde beş kişinin farklı listelerde boy ve kilo değerleri bulunulyor. Bu kişilerin vucut kitle indekslerinin ne olduğuna bakalım.
1 2 3 4 5 6 | boy = np.array([1.80,1.75,1.65,1.56,1.70]) kilo = np.array([78.50,80.20,110.90,75.00,95.53]) vki = kilo/(boy*boy) print(vki) ###########Ekran Çıktısı############## #[24.22839506 26.1877551 40.73461892 30.81854043 33.05536332] |
Yukarıdaki işlemde beş kişinin boy ve kilo değerleri ile vucut kitle indeksleirni hesaplamış bulunuyoruz. Bunları Python List ile yapmak isteseydik döngüye sokmamız gerekmeteydi.
Şimdi ise vucut kitle indeksini hesapladığmız kulanıcılarımızın 25 ve üzeri olanları kimlermiş öğrenelim.
1 2 3 4 5 6 7 | boy = np.array([1.80,1.75,1.65,1.56,1.70]) kilo = np.array([78.50,80.20,110.90,75.00,95.53]) vki = kilo/(boy*boy) sonuc = vki >= 25 print(sonuc) ###########Ekran Çıktısı############## #[False True True True True] |
Yukarıda vki
değişkeni içerisindeki değerleri vki >= 25
if kıyaslamasını yaptık. Şartı sağlayanlar True
değer alırken, kıyası sağlayamayanlar ise false
değerini aldılar.
Diğer bir kullanımı ise aşağıdaki örnekte verilmiştir.
1 2 3 4 5 6 7 | boy = np.array([1.80,1.75,1.65,1.56,1.70]) kilo = np.array([78.50,80.20,110.90,75.00,95.53]) vki = kilo/(boy*boy) sonuc = vki[vki >= 25] print(sonuc) ###########Ekran Çıktısı############## #[26.1877551 40.73461892 30.81854043 33.05536332] |
Yukarıdaki kullanımda ise vucut kitle indeksi yirmibeş ve üzeri olanlarını döndürdü.
Şimdi ise NumPy Modülü ile sayı dizilerini oluturalım.
Python NumPy Sayı Dizileri
Pythonda dinamik olarak sayı dizileri oluşturulmaktadır. Bu metodları tek tek inceleyelim.
Python NumPy Arange Kullanımı
NumPy.arange metodu ile verilen iki değer arasında NumPy dizi üretmek için kullanılıyor.
1 2 3 4 5 6 7 | dizi_5 = np.arange(5,15) #5'den 15'e kadar sıralı bir dizi oluşturduk print(dizi_5) dizi_6 = np.arange(4,13,2) #4'ten 13'e kadar 2'şer artan dizi oluşturduk print(dizi_6) ###########Ekran Çıktısı############## #[ 5 6 7 8 9 10 11 12 13 14] #[ 4 6 8 10 12] |
Python NumPy linespace Kullanımı
Numpy Modülü linespace metodu ile belirlenen iki sayı arasında üçüncü bir değer olan adet kadar eşit aralıkta sayı üretmek için kullanırız.
1 2 3 4 | dizi_7 = np.linspace(1,2,6) print(dizi_7) ###########Ekran Çıktısı############## #[1. 1.2 1.4 1.6 1.8 2. ] |
Bir ile 2 arasını altı eşit parçaya bölecek şekilde sayı üretmemizi sağladı.
Python NumPy logspace Kullanımı
Dizi değerlerini on üstü olarak yazmaktadır
1 2 3 4 5 | dizi_8 = np.logspace(0,10,4) print(dizi_8) ###########Ekran Çıktısı############## #[1.00000000e+00 2.15443469e+03 4.64158883e+06 1.00000000e+10] |
Python NumPy Çok Boyutlu Diziler
Listlerde olduğu gibi NumPy Modülü ilede çok boyutlu diziler oluşturulmaktadır. Listre göre daha esnek ve kullanılışlı yapılar sunan NumPy aynı zamanda çok boyutlu dizlerle matematiksel işlemlerde yapabilme yeteneğine sahiptir. Şimdi çok boyutlu bir NumPy dizisi oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 | dizi_9 = np.array([ [1,2,3], [4,5,6], [7,8,9], [10,11,12] ]) print(dizi_9) ###########Ekran Çıktısı############## #[[ 1 2 3] # [ 4 5 6] # [ 7 8 9] # [10 11 12]] |
NumPy Modülünde dizi içerisindeki değerlere index numaraları ile ulaşmaktayız.Şimdi tek boyutlu bir dizi oluşturalım ve bu dizi içerisindeki değerlere erişim sağlayalım.
1 2 3 4 5 6 7 8 9 10 11 12 | dizi_9 = np.arange(1,10) #birden ona kadar bir dizi oluşturduk print(dizi_9) #dizimizi ekrana yazdırdık print(dizi_9[2:]) #dizimizin ikinci indeksinden sonraki verileri ekrana bastık print(dizi_9[:8]) #dizimizin sekizinci indeksine kadar olan verilerimizi ekrana bastık print(dizi_9[3:8]) #dizimdeki üçüncü indeksten sekizinci indekse kadar olan verileri ekrana bastık print(dizi_9[::2]) #dizimizde başında sonuna ikişer sıra ile değerlerini ekrana bastırdık. ###########Ekran Çıktısı############## #[1 2 3 4 5 6 7 8 9] #[3 4 5 6 7 8 9] #[1 2 3 4 5 6 7 8] #[4 5 6 7 8] #[1 3 5 7 9] |
Şimdi ise çok boyutlu dizlerde verilere erşim salayalım.
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 35 36 | dizi_10 = np.array([ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18], [19,20,21,22,23,24] ]) # 2 boyutlu bir dizi oluşturduk. print(dizi_10) # dizi değerimizi ekrana bastık. print("-"*20) print(dizi_10[0:2]) # iki boyutlu dizimizin ilk iki boyutunu aldık (sıfırıncı satırdan ikinci satıra) print("-"*20) #dizi_10[rowStart:rowEnd , colStart:colEnd] print(dizi_10[0:1,0:3]) #ilk satırın üçücü indeksine kadar aldık print("-"*20) print(dizi_10[2][1]) #ikinci satırın birinci sütunundaki veriyi aldık print("-"*20) print(dizi_10[0:2,1:3]) #Sıfırıncı satırdan ikinci satıra birinci sütundan üçüncü sütuna kadar olan verileri getirdi. print("-"*20) print(dizi_10[1:3,2:5]) #birinci satırdan üçüncü satıra kadar / ikinci sütundan beşinci sütuna kadar olan verileri getirdi ###########Ekran Çıktısı############## #[[ 1 2 3 4 5 6] #[ 7 8 9 10 11 12] #[13 14 15 16 17 18] #[19 20 21 22 23 24]] #-------------------- #[[ 1 2 3 4 5 6] # [ 7 8 9 10 11 12]] #-------------------- #[[1 2 3]] #-------------------- #14 #-------------------- #[[2 3] # [8 9]] #-------------------- #[[ 9 10 11] # [15 16 17]] |
Çok boyutlu dizlerde indeks erişim önemlidir bu nedenle yukarıdaki örnekleri uygulayarak incelemenizi önririm.
Python NumPy shape Kullanımı
NumPy shape metodu çok boyutlu dizilerin boyut bilgisini vermektedir.
1 2 3 4 5 6 7 8 9 | dizi_11 = np.array([ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18], [19,20,21,22,23,24] ]) print(np.shape(dizi_11)) ###########Ekran Çıktısı############## #(4, 6) |
NumPy Metodları.
Aşağıdaki metodlar numpy modülü içerisinde kullanılmaktadır. Açıklamaları verilerek aşağıda örnek uygulamalarıda verilmiştir.
Metod | Açıklama |
---|---|
dizi.max() | İlgili boyuttaki en büyük değeri verir. |
dizi.argmax() | İlgili boyuttaki dizini en büyük değerinin indeks numarsını veirir |
dizi.min() | İlgili dizideki en küçük değeri verir. |
dizi.argmin() | Dizi içerisindeki en küçük değerin indeks numarasını döndürür. |
dizi.ptp() | Dizi içerisindeki en küçük ve en büyük değer arasındaki farkı verir. |
dizi.clip(min,max) | Dizi içerisindeki belirlenen sayıdan küçükleri minimum değer olarak ve yine belirlenen sayılarıda maximum değer olarak vermektedir. |
dizi.round(x) | Dizi içerisindeki verileri belirlenen onlalık değere kadar yuvarlar. |
dizi.trance() | Dizi veri içerisindeki köşeli parantez sayısını verir |
dizi.mean() | Belirlenen eksen doğurultusunda verilerin ortalamasını verir. |
dizi_11.var() | Belirlenen eksen doğrultusunda varyans değerini verir. |
dizi_11.std() | Belirlenen ekson boyunca verilerin standart sapmasını verir |
dizi.prod() | Belirlenen eksende verilerin çarpım değerini verir. |
dizi.cumprod() | Belirlenen eksendeki verilerin birikimli çarpımını verir. |
dizi.sort() | Belirlenen eksendeki verilerin sıralamasını verir. |
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 35 36 37 38 39 40 | dizi_11 = np.array([ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18], [19,20,21,22,23,24] ]) dizi_11.max() #En büyük değer #24 dizi_11.argmax() #En büyük değerin index numarası #23 dizi_11.min() #En küçük değer #1 dizi_11.argmin() #En küçük değerin index numarası #0 dizi_11.ptp() #En küçük ve en büyük değer arasındaki fark #23 dizi_11.clip(10,18) #array([[10, 10, 10, 10, 10, 10], # [10, 10, 10, 10, 11, 12], # [13, 14, 15, 16, 17, 18], # [18, 18, 18, 18, 18, 18]]) dizi_12 = np.array([1.23,1.44,1.56]) dizi_12.round() #array([1., 1., 2.]) dizi_11.trace() #dizi veri içerisindeki köşe parantez sayısını verir. #46 dizi_11.mean() #verilen eksenin ortalamasını verir #12.5 dizi_11.var() #47.916666666666664 dizi_11.std() #6.922186552431729 dizi_11.prod() #-7835185981329244160 dizi_12.cumprod() # array([1.23 , 1.7712 , 2.763072]) dizi_13 = np.array([12,3,34,22,34,3,2]) dizi_13.sort() dizi_13 #array([ 2, 3, 3, 12, 22, 34, 34]) |
NumPy matmul Kullanımı
Verilen iki NumPy dizisinin metris çarpımını yapmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | dizi_14 = np.array([ [1,2,3], [7,8,9], [7,8,9] ]) dizi_15 = np.array([ [1,2,3], [7,8,9], [7,8,9] ]) np.matmul(dizi_14,dizi_15) ###########Ekran Çıktısı############## #array([[ 36, 42, 48], # [126, 150, 174], # [126, 150, 174]]) |
NumPy sum Method Kullanımı
Verilen NumPy dizisinde verilen boyuttaki verilerin toplamını verir.
1 2 3 4 5 6 7 8 | dizi_11 = np.array([ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18], [19,20,21,22,23,24] ]) np.sum(dizi_11[0:2,:]) #78 |
Numpy nditer Method Kullanımı
NumPy dizisindeki verilerin döngüye sokularak ekrana basılmasınıda kullanılmaktadır.
1 2 3 | for x in np.nditer(dizi_11): print(x,end="-") #1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24- |
Önemli NumPy Methodları
NumPy Modülü’nde kullanılmakta olan önemli methodlara değineceğiz. Anlatılan methodların dışında NumPy modülünde bulunan bir çok method vardır.
NumPy np.amax() Kullanımı
Verilen numpy dizisinde istenen endeksteki maximum değeri dönderir.
1 2 3 4 5 6 7 8 9 10 11 | dizi_16 = np.random.uniform(low=1,high=50,size=12).reshape(4,3) #iki boyutlu 3 sütun dörsatır bir dizi oluşturduk. print(dizi_16) np.amax(dizi_16,axis=0) #Her sütundaki maximum veriyi gönderir. np.amax(dizi_16,axis=1) #Her Satırdaki en büyük veriyi verir. ###########Ekran Çıktısı############## #[[18.5390264 23.28177239 21.98102367] # [ 3.22090641 22.17865348 40.57183351] # [33.55643287 18.90198672 36.52694405] # [45.65357886 16.84187651 16.53995437]] #array([23.28177239, 40.57183351, 36.52694405, 45.65357886]) |
Python NumPy np.random.randint Kullanımı
Belirlenen veri aralığınde random sayılarla NumPy dizi oluşturmaya yarar.
1 2 3 4 | dizi_28 = np.random.randint(low=1,high=21,size=9) print(dizi_28) ###########Ekran Çıktısı############## #[ 2 15 4 4 19 13 7 14 14] |
Yine istersenin .reshape ile diziyi boyutlandırabilirsiniz.
1 2 3 4 5 6 | dizi_28 = np.random.randint(low=1,high=21,size=9).reshape(3,3) print(dizi_28) ###########Ekran Çıktısı############## #[[ 1 14 9] # [18 14 11] # [10 8 7]] |
NumPy np.amin() Kullanımı
Verilen numpy dizisinde istenen endeksteki minimum değeri dönderir.
1 2 3 4 5 6 7 8 9 10 11 12 | dizi_16 = np.random.uniform(low=1,high=50,size=12).reshape(4,3) #iki boyutlu 3 sütun dörsatır bir dizi oluşturduk. print(dizi_16) np.amin(dizi_16,axis=0) #Her sütundaki minimum veriyi gönderir. np.amin(dizi_16,axis=1) #Her Satırdaki en küçük veriyi verir. #[[47.0005608 4.88038085 26.58178795] # [24.86575277 22.47837048 27.53064481] # [ 6.51335508 27.69046066 29.01394194] # [29.71734638 2.93626693 43.25741236]] #array([ 4.88038085, 22.47837048, 6.51335508, 2.93626693]) |
NumPy np.argsort() Kullanımı
Bir NumPy dizisinde sıralama yapılacağında şuanki verinin kaçıncı indekste yer alacağını veririr.
1 2 3 4 5 6 | dizi_17 = np.arange(11,5,-1) print(dizi_17) dizi_17.argsort() #[11 10 9 8 7 6] #array([5, 4, 3, 2, 1, 0]) |
Python NumPy np.concatenate() Kullanımı
Var olan iki NumPy dizisini birleştirmek için kullanılmaktadır. Birleşim yatay ve dikey eksende olabilmektedir.Fonksiyon içersinde axis=0
verilirse satırlar alt alta gelirken axis=1
verilirse sütunlar yan yana gelecek şekide birleştirlmektedir.
1 2 3 4 | dizi_19 = np.arange(1,9).reshape(2,4) #iki satır dört sütun bir dizi oluşturuldu dizi_20 = np.arange(9,17).reshape(2,4) #iki satır dört sütün bir dizi oluşturuldu np.concatenate((dizi_19,dizi_20),axis=0) # alt alta birleştirme yaptı np.concatenate((dizi_19,dizi_20),axis=1) # yan yana birleştirme yaptı |
Python NumPy np.full Kullanımı
Python NumPy Modülünde isteninlen veri tipinde ve boyutunda dizi oluşturamak için kullanılır.Üç parametre almaktadır.numpy.full(shape, fill_value, dtype=None, order=’C’, *, like=None) ilk parametre dizinin boyutu ikinci parametre dizi içerisine verilecek veri ve üçüncü parametre verilen değerin datatipi int,float gibi, dördüncü parametre ise oluşturulan dizinin ram’de C dili veya fortran dilindeki bitişik veri olarak tutulup tutulmayacağını belirler.
1 2 3 4 5 6 7 8 | np.full((4,4),1,dtype=np.int64) ###########Ekran Çıktısı############## #array([[1, 1, 1, 1], # [1, 1, 1, 1], # [1, 1, 1, 1], # [1, 1, 1, 1]]) |
Python NumPy np.intersect1d Kullanımı
Var olan iki NumPy dizi içersindeki ortak verileri seçmemize yarar.
1 2 3 4 5 | dizi_21 = np.array([12,34,44,56,67,78,89,56,33]) dizi_22 = np.array([32,23,4,53,13,23,33,67,82,89]) np.intersect1d(dizi_21,dizi_22) ###########Ekran Çıktısı############## #array([33, 67, 89]) |
Python NumPy np.setdiff1d Kullanımı
Var olan iki NumPy dizi içerisinde bir dizide olup diğerinde olmayan verileri verir
1 2 3 4 5 6 7 | dizi_21 = np.array([12,34,44,56,67,78,89,56,33]) dizi_22 = np.array([32,23,4,53,13,23,33,67,82,89]) np.setdiff1d(dizi_22,dizi_21) np.setdiff1d(dizi_21,dizi_22) ###########Ekran Çıktısı############## #array([ 4, 13, 23, 32, 53, 82]) #array([12, 34, 44, 56, 78]) |
Python NumPy np.unique Kullanımı
Bir NumPy dizi içerisinde benzersiz verilerin getirir
1 2 3 4 5 | dizi_25 = np.array([12,34,44,56,67,78,89,56,33,32,23,4,53,13,23,33,67,82,89]) np.unique(dizi_25) ###########Ekran Çıktısı############## #array([ 4, 12, 13, 23, 32, 33, 34, 44, 53, 56, 67, 78, 82, 89]) |
Python NumPy np.isin Kullanımı
Var olan bir dizi içerisinde aranan verilerilerin var oluş olmadığını kontrol eder geriye True vey False değer dönderir.
1 2 3 4 5 6 | aranan = np.array([2,3,4,3,7,33,56,78]) dizi_21 = np.array([12,34,44,56,67,78,89,56,33]) np.isin(aranan,dizi_21 ) ###########Ekran Çıktısı############## #array([False, False, False, False, False, True, True, True]) |
Python NumPy np.ones Kullanımı
İstenilen boyutta NumPy dizi oluşturmak için kullanılır. Var sayılan değer olarak 1 verilmektedir.
1 2 3 4 5 6 7 | dizi_22 = np.ones((4,4)) print(dizi_22) ###########Ekran Çıktısı############## #[[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]] |
Python NumPy np.repeat Kullanımı
Tekrar eden verilerden oluşan bir NumPy dizi oluşturmaya yarar.
1 2 3 4 | dizi_23 = np.repeat(4,5) print(dizi_23) ###########Ekran Çıktısı############## #[4 4 4 4 4] |
Python NumPy np.reshape Kullanımı
Var olan iki NumPy dizisi içerisinde tekil olan verileri göndermektedir.
1 2 3 4 5 | dizi_25 = np.array([12,34,44,56,67,78,89,56,33,32,23,4,53,13,23,33,67,82,89]) np.unique(dizi_25) ###########Ekran Çıktısı############## #array([ 4, 12, 13, 23, 32, 33, 34, 44, 53, 56, 67, 78, 82, 89]) |
NumPy modülünde oluşturulmuş olan bir diziyi tekrardan boyutlandırmak için kullanılır.
1 2 3 4 5 6 7 8 | dizi_24 = np.arange(12).reshape(4,3) print(dizi_24) ###########Ekran Çıktısı############## #[[ 0 1 2] # [ 3 4 5] # [ 6 7 8] # [ 9 10 11]] |
Python NumPy np.where Kullanımı
Bir Python dizi içersindeki verilerin istenen şarta uyup uymadığını kontrol eder.
1 2 3 4 5 6 7 8 9 | dizi_26 = np.arange(1,20) print(dizi_26) indexNum = np.where(dizi_26 % 2 == 0) print(indexNum) ###########Ekran Çıktısı############## #[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] #(array([ 1, 3, 5, 7, 9, 11, 13, 15, 17]),) |
Python NumPy np.zeros Kullanımı
İstenilen boyutta sıfırlardan oluşan bir NumPy dizi oluşturmaktadır.
1 2 3 4 5 6 7 | dizi_27 = np.zeros((3,4)) dizi_27 ###########Ekran Çıktısı############## #array([[0., 0., 0., 0.], # [0., 0., 0., 0.], # [0., 0., 0., 0.]]) |
Python NumPy Diğer Önemli Fonksiyonlar
Yine NumPy modülünde aşağıda belirtmiş olduğumuz fonksiyonlar sıklıkla kullanılmaktadır.
dizi.ndim | Dizinin boyutunu görüntülemek için kullanılır. |
dizi.shape | Var olan bir dizinin şemasını verir |
dizi.size | Dizinin eleman sayısını verir. |
dizi.dtype | Dizinin veri tipini öğrendik |
1 2 3 4 5 6 | dizi_28 = np.random.randint(low=1,high=21,size=9).reshape(3,3) print(dizi_28) print(dizi_28.ndim) #dizinin boyutunu öğrendik / 2 print(dizi_28.shape) #dizinin şemasını öğrendik / (3, 3) print(dizi_28.size) #dizinin eleman sayısını öğrendik / 9 print(dizi_28.dtype) #dizi tipini öğrendik / int64 |