MENÃœLER

Anasayfa

Åžiirler

Yazılar

Forum

Nedir?

Kitap

Bi Cümle

Ä°letiÅŸim

NumPy İndeksleme ve Dilimleme
Kaya Ridvan

NumPy İndeksleme ve Dilimleme


NumPy indeksleme ve dilimleme, NumPy dizileriyle çalýþýrken çok önemli ve kullanýþlý iki iþlemdir. Bu iþlemler sayesinde, dizilerin istediðimiz bölümlerine veya elemanlarýna kolayca ulaþabilir, deðiþtirebilir veya yeni diziler oluþturabiliriz. Þimdi bunlarýn nasýl yapýldýðýna bakalým.
NumPy indeksleme, bir dizinin belirli bir elemanýna veya alt kümesine eriþmek için kullanýlan bir yöntemdir. NumPy dizilerinin indeks numaralarý 0’dan baþlar ve dizinin boyutuna göre artar. Bir boyutlu dizilerde indeks numarasý tek bir sayýdýr ve dizinin sýrasýný belirtir. Örneðin, a = np.array([10, 20, 30, 40, 50]) dizisinde a[0] elemaný 10, a[4] elemaný 50’dir. Ýndeks numarasý negatif de olabilir, bu durumda dizinin sonundan baþa doðru sayýlýr. Örneðin, a[-1] elemaný 50, a[-3] elemaný 30’dur.
Çok boyutlu dizilerde ise indeks numarasý birden fazla sayýdan oluþur ve dizinin her boyutunu belirtir. Örneðin, b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) dizisinde b[0, 0] elemaný 1, b[1, 2] elemaný 6’dýr. Ýndeks numaralarý virgülle ayrýlýr ve sýrasýyla satýr, sütun veya düzlem numaralarýný gösterir. Ýndeks numaralarý negatif de olabilir, bu durumda da dizinin sonundan baþa doðru sayýlýr. Örneðin, b[-1, -1] elemaný 9, b[-2, -3] elemaný 4’tür.
NumPy dilimleme, bir dizinin belirli bir aralýktaki elemanlarýna veya alt kümelerine eriþmek için kullanýlan bir yöntemdir. NumPy dilimleme iþlemi, : iþareti ile belirtilen baþlangýç, bitiþ ve adým deðerlerini kullanýr. Baþlangýç deðeri dahil, bitiþ deðeri hariçtir. Adým deðeri ise aralýktaki elemanlarýn kaçar kaçar atlanacaðýný belirtir. Örneðin, a = np.array([10, 20, 30, 40, 50]) dizisinde a[1:4] dilimi [20, 30, 40], a[0:5:2] dilimi [10, 30, 50] dizilerini verir. Dilimleme iþlemi, çok boyutlu dizilerde de uygulanabilir. Örneðin, b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) dizisinde b[0:2, 1:3] dilimi [[2, 3], [5, 6]], b[:, ::-1] dilimi [[3, 2, 1], [6, 5, 4], [9, 8, 7]] dizilerini verir.
NumPy indeksleme ve dilimleme iþlemleri, dizilerin elemanlarýna veya alt kümelerine eriþmenin yaný sýra, dizileri deðiþtirmek veya yeni diziler oluþturmak için de kullanýlabilir. Örneðin, a = np.array([10, 20, 30, 40, 50]) dizisinde a[0] = 100 yaparak ilk elemaný 100’e deðiþtirebilir, b = a[1:3] yaparak yeni bir dizi oluþturabiliriz. Ancak, dikkat etmemiz gereken bir nokta, dilimleme iþlemi ile oluþturulan yeni dizilerin, orijinal dizinin bir kopyasý deðil, bir görünümü (view) olduðudur. Yani, yeni diziyi deðiþtirdiðimizde, orijinal diziyi de deðiþtirmiþ oluruz. Örneðin, b[0] = 200 yaptýðýmýzda, a dizisinin de [100, 200, 30, 40, 50] olarak deðiþtiðini görürüz. Eðer, orijinal diziyi deðiþtirmeden yeni bir dizi oluþturmak istiyorsak, copy() metodunu kullanabiliriz. Örneðin, c = a[1:3].copy() yaparak, c dizisini deðiþtirdiðimizde, a dizisinin deðiþmediðini görürüz.
NumPy indeksleme ve dilimleme iþlemleri, NumPy dizileriyle çalýþýrken çok önemli ve kullanýþlý iki iþlemdir. Bu iþlemler sayesinde, dizilerin istediðimiz bölümlerine veya elemanlarýna kolayca ulaþabilir, deðiþtirebilir veya yeni diziler oluþturabiliriz.
1. UYGULAMA
NumPy dizilerinde dilimleme iþlemlerini yapmak için aþaðýdaki adýmlarý takip edebilirsiniz:
1. Adým: Bir boyutlu NumPy dizisi oluþturun ve dilimleme iþlemlerini uygulayýn. Örneðin, a = np.array([1,2,3,4,5,6]) dizisinde ilk üç elemaný seçmek için a[:3] yazabilirsiniz. Bu size [1,2,3] dizisini verecektir. Son iki elemaný seçmek için a[-2:] yazabilirsiniz. Bu size [5,6] dizisini verecektir. Ýkiþer atlayarak elemanlarý seçmek için a[::2] yazabilirsiniz. Bu size [1,3,5] dizisini verecektir.
2. Adým: Ýki boyutlu NumPy dizisi oluþturun ve dilimleme iþlemlerini uygulayýn. Örneðin, b = np.array([[1,2,3], [4,5,6], [7,8,9]]) dizisinde ilk iki satýrý ve ilk iki sütunu seçmek için b[:2, :2] yazabilirsiniz. Bu size [[1,2], [4,5]] dizisini verecektir. Son satýrý ve son sütunu seçmek için b[-1:, -1:] yazabilirsiniz. Bu size [[9]] dizisini verecektir. Her satýrdan tek sütun seçmek için b[:, ::2] yazabilirsiniz. Bu size [[1,3], [4,6], [7,9]] dizisini verecektir.
3. Adým: Üç boyutlu NumPy dizisi oluþturun ve dilimleme iþlemlerini uygulayýn. Örneðin, c = np.array([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]]) dizisinde ilk küpü seçmek için c[0] yazabilirsiniz. Bu size [[1,2,3], [4,5,6]] dizisini verecektir. Son küpten son iki elemaný seçmek için c[-1, -1, -2:] yazabilirsiniz. Bu size [11,12] dizisini verecektir. Her küpten ortadaki elemaný seçmek için c[:, 1, 1] yazabilirsiniz. Bu size [5,11] dizisini verecektir.
2. UYGULAMA
NumPy dizisinden dilimleme ile eleman seçme iþlemi, belirli bir aralýk veya adým boyutu ile dizinin bir kýsmýný veya tamamýný almak için kullanýlan bir yöntemdir. Bu iþlem, dizinin baþlangýç ve bitiþ indekslerini belirterek veya iki nokta üst üste (:) sembolü kullanarak yapýlabilir. Aþaðýdaki iþlem adýmlarýný takip ederek eleman seçimi yapýnýz.
1. Adým: 10 ile 30 arasýnda sayýlardan oluþan bir NumPy dizisi oluþturmak için np.arange(10,30) fonksiyonunu kullanýyoruz. Bu fonksiyon, 10 dahil 30 hariç olmak üzere 1’er artan sayýlarý içeren bir dizi döndürür. Oluþturulan dizinin boyutu 20’dir.
2. Adým: Oluþturulan dizinin 0 ile 4 indeks numarasý arasýndaki elemanlara eriþmek için x[0:4] veya x[:4] ifadesini kullanýyoruz. Bu ifade, dizinin 0 dahil 4 hariç olmak üzere ilk 4 elemanýný alýr. Bu elemanlar 10, 11, 12 ve 13’tür.
3. Adým: Oluþturulan dizinin 4 indeks numaralý elemanýndan son elemana kadar eriþmek için x[4:] ifadesini kullanýyoruz. Bu ifade, dizinin 4 dahil son elemana kadar olan kýsmýný alýr. Bu elemanlar 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 ve 29’dur.
4. Adým: Oluþturulan dizinin 0 indeks numaralý elemanýndan baþlayarak indeks numarasý ikiþer artarak 10 indeks numaralý elemana kadar eriþmek için x[0:10:2] ifadesini kullanýyoruz. Bu ifade, dizinin 0 dahil 10 hariç olmak üzere her 2. elemanýný alýr. Bu elemanlar 10, 12, 14, 16 ve 18’dir..
3. UYGULAMA
NumPy, Python programlama dilinde sayýsal hesaplamalar için kullanýlan bir kütüphanedir. NumPy dizileri, ayný türdeki verileri depolayan çok boyutlu veri yapýlarýdýr. NumPy dizilerinde dilimleme, belirli bir aralýktaki dizi elemanlarýný seçmek için kullanýlan bir yöntemdir. Dilimleme iþlemi için köþeli parantezler içinde satýr ve sütun indekslerini belirtmek gerekir. Aþaðýda verilen iþlem adýmlarýný takip ederek dilimleme iþlemini yapýn.
1. Adým: Ýki boyutlu bir dizi oluþturunuz. y=np.random.randint(0,10,(4,4))
Bu adýmda, 0 ile 10 arasýnda rastgele tam sayýlar üreten np.random.randint fonksiyonunu kullanarak 4x4 boyutunda bir dizi oluþturuyoruz. Bu diziyi y deðiþkenine atýyoruz. Oluþturulan diziyi görmek için y yazýp çalýþtýrabilirsiniz. Örnek bir çýktý þöyle olabilir:
y = [[2 8 6 9]
[7 4 3 0]
[5 1 9 2]
[0 3 7 6]]
2. Adým: Oluþturulan dizinin ikinci satýrýnýn tüm sütunlarýný seçme iþlemini yapýnýz. y[1,:]
Bu adýmda, y dizisinin ikinci satýrýný seçmek için köþeli parantezler içinde 1 yazýyoruz. Bu, dizinin ikinci satýrýnýn indeksini belirtir. Dizilerde indeksleme sýfýrdan baþlar, yani ilk satýrýn indeksi 0, ikinci satýrýn indeksi 1, üçüncü satýrýn indeksi 2 ve dördüncü satýrýn indeksi 3’tür. Tüm sütunlarý seçmek için ise virgül koyup iki nokta üst üste iþaretini yazýyoruz. Bu, sütun indeksinin baþlangýç ve bitiþ deðerlerini belirtmez, yani tüm sütunlarý kapsar. Bu þekilde yazdýðýmýzda, y[1,:] ifadesi y dizisinin ikinci satýrýnýn tüm sütunlarýný seçer. Bu ifadeyi yazýp çalýþtýrdýðýmýzda, örnek bir çýktý þöyle olabilir:
y[1,:] = [7 4 3 0]
3. Adým: Oluþturulan dizinin ikinci sütununun tüm satýrlarýný seçme iþlemini yapýnýz. y[:,1]
Bu adýmda, y dizisinin ikinci sütununu seçmek için köþeli parantezler içinde virgül koyup 1 yazýyoruz. Bu, dizinin ikinci sütununun indeksini belirtir. Dizilerde indeksleme sýfýrdan baþlar, yani ilk sütunun indeksi 0, ikinci sütunun indeksi 1, üçüncü sütunun indeksi 2 ve dördüncü sütunun indeksi 3’tür. Tüm satýrlarý seçmek için ise iki nokta üst üste iþaretini yazýyoruz. Bu, satýr indeksinin baþlangýç ve bitiþ deðerlerini belirtmez, yani tüm satýrlarý kapsar. Bu þekilde yazdýðýmýzda, y[:,1] ifadesi y dizisinin ikinci sütununun tüm satýrlarýný seçer. Bu ifadeyi yazýp çalýþtýrdýðýmýzda, örnek bir çýktý þöyle olabilir:
y[:,1] = [8 4 1 3]
4. Adým: Oluþturulan dizinin ilk iki satýrý ile ilk üç sütununu seçme iþlemini yapýnýz. y[0:2,0:3]
Bu adýmda, y dizisinin ilk iki satýrýný seçmek için köþeli parantezler içinde 0:2 yazýyoruz. Bu, satýr indeksinin baþlangýç ve bitiþ deðerlerini belirtir. Baþlangýç deðeri dahil, bitiþ deðeri hariçtir. Yani 0:2, 0 ve 1 indeksli satýrlarý seçer. Ýlk üç sütunu seçmek için ise virgül koyup 0:3 yazýyoruz. Bu da, sütun indeksinin baþlangýç ve bitiþ deðerlerini belirtir. Baþlangýç deðeri dahil, bitiþ deðeri hariçtir. Yani 0:3, 0, 1 ve 2 indeksli sütunlarý seçer. Bu þekilde yazdýðýmýzda, y[0:2,0:3] ifadesi y dizisinin ilk iki satýrý ile ilk üç sütununu seçer. Bu ifadeyi yazýp çalýþtýrdýðýmýzda, örnek bir çýktý þöyle olabilir:
y[0:2,0:3] = [[2 8 6]
[7 4 3]]
5. Adým: Oluþturulan dizinin ilk iki sütununu seçme iþlemini yapýnýz. y[:,0:2]
Bu adýmda, y dizisinin ilk iki sütununu seçmek için köþeli parantezler içinde virgül koyup 0:2 yazýyoruz. Bu, sütun indeksinin baþlangýç ve bitiþ deðerlerini belirtir. Baþlangýç deðeri dahil, bitiþ deðeri hariçtir. Yani 0:2, 0 ve 1 indeksli sütunlarý seçer. Tüm satýrlarý seçmek için ise iki nokta üst üste iþaretini yazýyoruz. Bu, satýr indeksinin baþlangýç ve bitiþ deðerlerini belirtmez, yani tüm satýrlarý kapsar. Bu þekilde yazdýðýmýzda, y[:,0:2] ifadesi y dizisinin ilk iki sütununun tüm satýrlarýný seçer. Bu ifadeyi yazýp çalýþtýrdýðýmýzda, örnek bir çýktý þöyle olabilir:
y[:,0:2] = [[2 8]
[7 4]
[5 1]
[0 3]]
6. Adým: Oluþturulan dizide 4 sayýsýndan büyük deðere sahip olan dizi elemanlarý için mantýksal seçim iþlemini yapýnýz. y[y>4]
Bu adýmda, y dizisinde 4 sayýsýndan büyük deðere sahip olan dizi elemanlarýný seçmek için köþeli parantezler içinde y>4 yazýyoruz. Bu, y dizisinin her bir elemanýný 4 sayýsý ile karþýlaþtýrarak bir mantýksal deðer döndürür. Eðer eleman 4’ten büyükse True, deðilse False olur. Bu þekilde yazdýðýmýzda, y[y>4] ifadesi y dizisinde 4’ten büyük olan elemanlarý bir dizi olarak döndürür. Bu ifadeyi yazýp çalýþtýrdýðýmýzda, örnek bir çýktý þöyle olabilir:
y[y>4] = [8 6 9 7 5 9 7 6]
NumPy Yeniden Boyutlandýrma
NumPy, Python programlama dilinde bilimsel hesaplamalar için kullanýlan bir kütüphanedir. NumPy dizisi, ayný türden verileri tutan çok boyutlu bir veri yapýsýdýr. NumPy dizilerinin boyutu, dizinin kaç eleman içerdiðini belirler. NumPy dizilerinin þekli ise, dizinin kaç boyutlu olduðunu ve her boyutta kaç eleman bulunduðunu gösterir.
NumPy dizilerini yeniden boyutlandýrmak, dizinin þeklini deðiþtirmek anlamýna gelir. NumPy dizilerini yeniden boyutlandýrmak için reshape fonksiyonu kullanýlýr. reshape fonksiyonu, bir NumPy dizisini ve yeni bir þekil parametresi alýr. reshape fonksiyonu, dizinin elemanlarýný yeni þekle uyacak þekilde yeniden düzenler ve yeni bir NumPy dizisi döndürür. reshape fonksiyonu, dizinin eleman sayýsýný deðiþtirmez, sadece dizinin boyutlarýný deðiþtirir.
reshape fonksiyonunun kullanýmý için bir örnek verelim. Öncelikle, 12 elemanlý bir NumPy dizisi oluþturalým:
python
import numpy as np
dizi = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print(dizi)
print(dizi.shape)
Bu kodun çýktýsý þöyle olacaktýr:
python
[ 1 2 3 4 5 6 7 8 9 10 11 12]
(12,)
Görüldüðü gibi, dizi tek boyutlu bir NumPy dizisidir ve 12 eleman içerir. Þimdi, bu diziyi reshape fonksiyonu ile iki boyutlu bir NumPy dizisine dönüþtürelim. reshape fonksiyonuna yeni bir þekil parametresi olarak (3, 4) verelim. Bu, diziyi 3 satýr ve 4 sütundan oluþan bir matrise dönüþtürecektir.
python
yeni_dizi = dizi.reshape(3, 4)
print(yeni_dizi)
print(yeni_dizi.shape)
Bu kodun çýktýsý þöyle olacaktýr:
python
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
(3, 4)
Görüldüðü gibi, yeni_dizi iki boyutlu bir NumPy dizisidir ve 3 satýr ve 4 sütun içerir. reshape fonksiyonu, dizinin elemanlarýný sýrayla yeni þekle uyacak þekilde yerleþtirmiþtir. reshape fonksiyonu, dizinin eleman sayýsýný deðiþtirmediði için, yeni þeklin çarpýmý eski þekle eþit olmalýdýr. Yani, (3, 4) þeklindeki bir dizinin eleman sayýsý 3 x 4 = 12 olmalýdýr.
reshape fonksiyonu, NumPy dizilerinin þeklini deðiþtirmek için kullanýþlý bir araçtýr. NumPy dizilerinin þeklini deðiþtirmek, verileri farklý þekillerde görselleþtirmek, analiz etmek veya iþlemek için gerekebilir. NumPy kütüphanesi, reshape fonksiyonunun yaný sýra, NumPy dizilerinin þeklini deðiþtirmek için baþka fonksiyonlar da sunar. Bu fonksiyonlar hakkýnda daha fazla bilgi için, NumPy kütüphanesinin resmi belgelerine bakabilirsiniz.
4. UYGULAMA
NumPy dizilerini yeniden boyutlandýrma iþlemini anlamak için aþaðýdaki adýmlarý takip ediniz.
1. Adým: Bir boyutlu NumPy dizisi oluþturunuz. 0 ile 15 arasýndaki sayýlarý içeren bir dizi oluþturalým.
python
import numpy as np
dizi = np.arange(0, 16)
dizi
2. Adým: Oluþturduðunuz diziyi iki boyutlu hâle getiriniz. 4 satýr ve 4 sütundan oluþan bir matris þeklinde yeniden boyutlandýralým.
python
yenidizi2d = dizi.reshape(4, 4)
yenidizi2d
3. Adým: Oluþturduðunuz diziyi üç boyutlu hâle getiriniz. 2 katman, 4 satýr ve 4 sütundan oluþan bir küp þeklinde yeniden boyutlandýralým.
python
yenidizi3d = dizi.reshape(2, 4, 4)
yenidizi3d
4. Adým: Oluþturduðunuz üç boyutlu veya iki boyutlu bir diziyi bir boyutlu hâle getiriniz. -1 parametresini kullanarak dizinin tüm elemanlarýný tek bir boyutta sýralayalým.
python
yenidizi3d.reshape(-1)
yenidizi2d.reshape(-1)
Sosyal Medyada Paylaşın:



(c) Bu şiirin her türlü telif hakkı şairin kendisine ve/veya temsilcilerine aittir.