Numpy Dizilerinin Dilimlenmesi (Slicing)
Numpy dizilerinin dilimlenmesi python dizilerinin dilimlenmesine benzer. Farklı olarak her bir boyutta ayrı olarak dilimleme işlemini yapmamız gerekmektedir. Hatırlayacağınız üzere dilimleme yaparken önce satır, sonra sütun seçiyoruz.
Tek boyutta dilimleme
a matrisi üzerinde dilimleme yaparak bir satırı veya sütunu seçebiliriz. Bu kısımlar yabancı geliyorsa Python'da dilimleme konularına bakabilirsiniz.
Belli bir satırdaki tüm elemanlar şu şekilde alınabilir.
Ya da belli bir sütundan seçim yapabiliriz.
İki boyutta dilimleme
a matrisi üzerinde dilimleme yaparak alt bir matris oluşturabiliriz. Örneğin ilk 2 satırı ve sütunlardan da 1. ve 2. sütunu seçelim. Bu kısımlar yabancı geliyorsa Python'da dilimleme konularına bakabilirsiniz.
Önemli bir nokta:
√ Burada dikkat edilmesi gereken nokta şudur: Dilimleme sonucunda oluşan yeni b matrisimiz aslında bellekte a matrisini referans etmektedir, yani b matrisi kendi başına yeni bir matris değildir. Dolayısıyla gerçek matristeki bir değişiklik b matrisini de bozacaktır.
Bunu isterseniz gözlemleyebilirsiniz. a matrisindeki bahsi geçen aralığa giren bir elemanın değerini değiştirelim ve b nin içeriğini gözlemleyelim. Sonucun değiştiğini göreceğiz.
Aralardan eleman seçme
Yeni bir matris oluşturalım. Bu matris 3x3 boyutlarında kare matris olsun ve köşegen değerlerine erişmek isteyelim. Bu durumda aralardan eleman seçebiliriz. Önce matrisimizi oluşturalım:
Örneğin sırasıyla [0,0], [1,1], [2,2] üzerindeki elemanlara erişmek istiyoruz. Dizi veya tuple parametre vererek bunu iki şekilde yapabiliriz. İlk parametre satırları, ikinci parametre ise sütunları seçmeye yarar.
veya
Dilimlenmiş kısımlar değiştirilebilir!
Yukarıdaki herhangi bir metodla dilimleme yapılmış kısımların tek bir komutla değiştirilmesi mümkündür. Örneğin köşegenleri seçtiğimiz son örnekte olduğu gibi, seçilen bu kısımlara 99 değeri atanmıştır.
İçinizden şöyle bir şey geçirdiğinizi duyar gibiyim. 3x3 boyutlu matriste köşegen değerleri belirlemek kolay, peki matrisimiz daha büyük boyutlu olsaydı. Örnegin 10x10 büyüklüğündeki rastgele tamsayı değerlerinden oluşan bir matrisin köşegen değerlerine 0 atamak isteseydik.
Önce bu matrisi nasıl oluşturduğumuzun üzerinden kısaca geçelim. Bir önceki özel numpy matrisleri kısmında bahsedildiği üzere random metodu bize 10x10 boyutlarında içerisinde 0-1 arası noktalı sayılardan oluşmuş bir matris üretti, sonrasında bunu 10 ile genişleterek 0-10 arası değerler içermesini sağladık. Sonra tamsayı değerlerini elde etmek üzere matrisi noktalı sayılardan tamsayı formatına çevirdik.
Şimdi köşegen değerleri bildiğimiz üzere [0, 0], [1, 1], .... , [n-1, n-1], [n, n] ikili değerlerinden oluşmaktadır. Bunun tek sayı değeri içeren halini np.arange( ) metodu ile elde edebiliriz. Bunu öğrenmiştik.
Şarta bağlı seçim yapma
Seçim yaptığımız dizi ya da matris elemanlarını belirli bir şartı sağlayıp sağlamamasına göre seçebiliriz. Örneğin basit bir matris oluşturalım ve içerisinde 3'e tam bölünebilen elemanları bulmaya çalışalım. Sonrasında bunları 10 ile genişletelim. Örneğin 3,6 gibi tam bölünen elemanlar 30, 60 gibi değerlere sahip olsun.
Sonuçta başlangıçtaki matrisimiz 3'e bölünenlerin olduğu kısımda genişlemiş olarak şu şekilde değişecektir.
Last updated