Veri Bilimi İçin Temel Python Kütüphaneleri : Numpy 2

Ceydanur İlhan
pisanoeng
Published in
5 min readDec 21, 2022

| Önceki Bölüm: Veri Bilimi İçin Temel Python Kütüphaneleri Numpy 1

Herkese yeniden merhaba!

Bir önceki yazımda numpy kütüphanesinden , numpy arraylerin özelliklerinden ve bir numpy arrayin nasıl oluşturulduğundan bahsetmiştim. Eğer onu henüz okumadıysanız önce onu okuyup bu yazı ile devam etmeniz daha verimli olacaktır.

Bu yazımda ise Numpy array elemanlarına nasıl erişim sağladığımızdan ve numpy arraylerde gerçekleştirdiğimiz işlemleri ele alacağım. Haydi başlayalım!

Numpy Array Elemanlarına Erişim

Numpy arraylerde elemanlara erişim sağlarken kaç tane dimension varsa o kadar indexing işlemi yapıyoruz. Numpy arraylerde elemanlara eriştikten sonra o eleman üzerinde değişiklik de yapabiliriz. Ama burada değiştirdiğimiz eleman değiştirilirken numpy arrayin tipine cast olmaya çalışır eğer cast işlemi olmazsa hata alabiliriz. Örneğin numpy arrayimiz oluşturulurken elemanları integer olarak verilmişte ama biz bir elemana erişip ona float bir değer vermeye çalışmışsak bu verdiğimiz float değer integera cast olarak yerine koyulur.

Tek Boyutlu Numpy Arraylerde Elemanlara Erişim

Çok Boyutlu Numpy Arraylerde Elemanlara Erişim

Çok boyutlu numpy arraylerde elemanlara istersek tek köşeli parantez ile istersek iki tane köşeli parantez ile erişim sağlayabiliriz. Negaitf indexleme işlemi yapmak da mümkündür.

Slicing ile Belirli Elemanlara Erişim

Slicing belirli bir başlangıç indeksinden bitiş indeksine kadar olan elemanları almak için kullanılır. Bitiş indeksini dahil etmez.

(baslangic_degeri, bitis_degeri, artis_miktari)

  • baslangic_degeri belirtilmezse varsayılan olarak 0 kabul edilir.
  • bitis_degeri belirtilmezse dizinin uzunluğu varsayılan bitiş değeri kabul edilir.
  • artis_miktari belirtilmezse varsayılan olarak 1 artım yapılır.

Fancy Indexing ile Belirli Elemanlara Erişim

Fancy indexing sayesinde belirli indekslerdeki elemanları döndürebiliriz. Bu işlemi gerçekleştirirken çıktı olarak dönmesini istediğimiz indeksleri bir liste içerisinde tutarız. Fancy indexing numpy_array_adi[index_listesi] şeklinde yapılır. İndeks listesi oluştururken elemanların sırası önemli değildir.

Fancy indexing sadece sayı öbeklerinde değil çok boyutlu arraylerde de geçerlidir. Bir çok boyutlu arrayde indexing yaparken virgülden önceki kısım satırlarda virgülden sonraki kısım sütunlarda indexing yapar. Burada virgülden önceki ve sonraki kısımda istediğimiz şekilde indexing yapabiliriz örneğin birini slicing yaparken diğerini fancy indexing yapabiliriz.

Fancy indexing yaparken istediğimiz elemanların değerlerini değiştirebiliriz.

Conditional Indexing ile Belirli Elemanlara Erişim

Elimizdeki array için bir duruma bakarak belirli filtrelemeler yapmak istediğimizde conditional indexing özelliğinden faydalanırız.

İki farklı array arasında da bir filtreleme işlemi yaparak bir array üzerinden bu koşulu sağlayan elemanları elde edebiliriz.

Birden fazla filtreyi mantıksal operatörler ile birbirine bağlayarak da filtreleme yapmak mümkündür.

Oluşturduğumuz bir filtrenin değilini almak istediğimizde ~ (tilda) simgesinden faydalanırız.

None olan ve olmayan değerleri filtrelemek için de conditional indexingden faydalanabiliriz.

Numpy Array İşlemleri

Numpy nümerik hesaplama işlemleri üzerine özelleşmiş bir kütüphane olduğu için matematik operatörleri kullanarak yaptığımız işlemleri element-wise yani eleman bazlı şekilde gerçekleştirir.

Çarpma İşlemi

Python’da listeleri birbiri ile çarpamazken numpy arraylerde bu işlemi gerçekleştirebiliriz. Burada dikkat etmemiz gereken şey çarpmak istediğimiz iki numpy arrayin aynı sayıda elemanlarının olmasıdır.

Numpy array ile skalar bir değeri çarpma işlemi gerçekleştirdiğimizde de bu skalar değer ile numpy arrayin bütün elemanlarını eleman bazlı çarparak sonucu döndürür.

Toplama İşlemi

Numpy arraylerde toplama işlemi de çarpma işleminde olduğu gibi eleman bazlı gerçekleştirilir.

Çıkarma İşlemi

Numpy arraylerde çıkarma işlemi de diğer işlemlerde olduğu gibi eleman bazlı gerçekleştirilir.

Bölme İşlemi

Numpy arraylerde bölme işlemi de diğer işlemlerde olduğu gibi eleman bazlı gerçekleştirilir.

Birleştirme İşlemi

Numpy arraylerde birleştirme işlemini concatenate özelliği sayesinde gerçekleştirebiliriz. Concatenate işlemi sonucunda birleştirme yaptığımız listelerde değişiklik meydana gelmez, iki numpy arrayi ayrı bir şekilde birleştirir. İstersek liste ya da tuple veri yapılarını da numpy arrayleri ile birleştirebiliriz. Concatenate işlemini gerçekleştirirken tip uyuşmazlığı olması durumunda type casting işlemi gerçekleştirilerek birleştirme yapılır.

Çok boyutlu numpy arraylerde concatenate işlemi gerçekleştirirken satır bazlı ya da sütun bazlı birleştirme işlemi gerçekleştirebiliriz. axis belirtilmediği durumlarda default olarak 0 kabul edilir ve satır bazlı birleştirme işlemi yapılır.

Numpy Arraylerinde Splitting

Elimizdeki bir numpy arrayi belli aralıklara bölüp o aralıkları almak istediğimizden splitting işlemini gerçekleştiririz.

split işlemini gerçekleştirirken ilk argüman olarak böleceğimiz numpy arrayi ikinci argüman olarak da bölme işlemini nasıl gerçekleştireceğimizi yazıyoruz.

İstersek splitting işlemi sonucunda elde ettiğimiz listenin elemanları olan nupy arrayleri değişkenlere de eşitleyebiliriz.

Splitting işlemini satır ya da sütun bazlı olarak gerçekleştirmek de mümkündür.

Numpy Arraylerini Sıralama

sort işlemi ile numpy arraylerimizde sıralama işlemini gerçekleştirebiliriz. Numpy arrayimizin elemanları integer ise sıralama işlemi yapıldığında küçükten büyüğe bir sıralama gerçekleşir ama yaptığımız sıralama işlemi numpy array üzerinde değişikliğe yol açmaz bunun yanında başka bir yöntemle arrayimizi güncellemek de mümkündür. np.sort(array_adi) yazdığımızda arrayimiz güncellenmezken array_adi.sort() işlemi sonucunda arrayimiz güncellenir.

argsort işlemi sayesinde de küçükten büyüğe bir sıralama işlemi gerçekleştirebiliriz. Ama bu sıralama işlemi sonucunda bize sıraladığı değerlerin indexlerini döndürür.

Subarray

Arrayimizin alt parçasına erişip onunla bir işlem yapmak istediğimizde subarraylerden faydalanırız.

Burada dikkat etmemiz gereken nokta oluşturduğumuz subarray ile arrayimizin aynı bellekte depolandığıdır. Bu yüzden subarrayde yaptığımız herhangi bir değişiklik arrayimizi de etkiler.

Oluşturduğumuz subarraydeki yaptığımız değişiklerin orijinal arrayimizi etkilemesini istemediğimizde copy() metodundan faydalanabiliriz. copy metodu ile herhangi bir subarray oluşturduğumuzda orijinal array ile subarrayimiz bellekte aynı yeri göstermiyor bu sebeple subarray üzerinde yaptığımız herhahngi bir değişiklik orijinal arraye etki etmiyor.

Numpy Arraylerde Sum Metodu ile Yapılan İşlemler

sum metodu sayesinde arrayimizdeki belirli değerleri ya da bütün değerleri toplayabiliriz.

Ayrıca eğer çok boyutlu arraylerle çalışıyorsak satır ve sütun değerleri üzerinde de toplama işlemi yapmak için sum metodunu kullanabiliriz.

Toplama yaparken axis değerini 0 olarak verdiğimizde sütun bazlı, axis değerini 1 verdiğimizde ise satır bazlı toplama işlemi yapıyoruz.

Numpy Arraylerde All Metodu ile Yapılan İşlemler

all metodu numpy array için verdiğimiz koşulun array’in her öğesine uyup uymadığına bakar.

Burada da sum metodunda olduğu gibi axisler üzerinden işlem yapabiliriz.

Numpy Arraylerde Any Metodu ile Yapılan İşlemler

Numpy arraylerde işlem yaparken arrayimizdeki herhangi bir elemanın verilen koşulu sağlayıp sağlamadığını kontrol etmek için any metodundan faydalanırız. Any metodunda da axisler üzerinde işlemler yapabiliriz.

Numpy kütüphanesi hakkında anlatacaklarım bu kadardı! Umarım keyifle okumuşsunuzdur. Bir sonraki yazımda Pandas kütüphanesini ele alacağız. Yeniden görüşünceye dek hoşça kalın!

--

--