Garfield
YZF Admin
Bir NumPy dizisini alt parçalara bölmek için en temel yöntem
Bu kodun çıktısı şöyledir:
Sonuç doğrudan tek bir dizi değil, üç ayrı NumPy dizisi içeren bir listedir. Örneğin ilk parçaya
Varsayımsal bu örnekte çıktı şu biçimde olur:
Burada 10 eleman 3 parçaya eşit dağıtılamadığı için ilk parça 4, diğer parçalar 3'er eleman içerir. Parçaların tam olarak aynı boyutta olması gerekiyorsa bu sonuç uygun değildir; o durumda eleman sayısını veya parça sayısını yeniden belirlemelisiniz.
Bu nedenle veri kümelerini sabit boyutlu gruplara ayırırken önce toplam eleman sayısının parça sayısına tam bölünüp bölünmediğini kontrol etmek gerekir. Boyutların farklı olması sorun değilse
Girdi dizisi şu şekildedir:
Çıktı şöyledir:
Buradaki
np.split() işlevidir. Dizi eşit büyüklükte bölünebiliyorsa np.split(dizi, parça_sayısı) kullanın; eşit bölünemeyen dizilerde ise np.array_split() gerekir. Sonuç, her biri dizinin bir bölümünü içeren NumPy dizilerinden oluşan bir listedir.Eşit büyüklükte alt parçalara bölme
np.split() dizinin belirtilen eksen boyunca eşit parçalara ayrılmasını ister. Örneğin 12 elemanlı bir diziyi 3 parçaya bölerseniz her parçada 4 eleman bulunur.
Python:
import numpy as np
dizi = np.arange(12)
parcalar = np.split(dizi, 3)
for parca in parcalar:
print(parca)
Bu kodun çıktısı şöyledir:
Kod:
[0 1 2 3]
[4 5 6 7]
[ 8 9 10 11]
Sonuç doğrudan tek bir dizi değil, üç ayrı NumPy dizisi içeren bir listedir. Örneğin ilk parçaya
parcalar[0], son parçaya parcalar[-1] ile erişebilirsiniz.Eşit bölünemeyen dizileri ayırma
Bir dizinin eleman sayısı parça sayısına tam bölünmüyorsanp.split() hata verir. Böyle durumlarda np.array_split() kullanılır. Bu işlev, parçaların boyutlarını mümkün olduğunca dengeli dağıtır.
Python:
import numpy as np
dizi = np.arange(10)
parcalar = np.array_split(dizi, 3)
for parca in parcalar:
print(parca, parca.shape)
Varsayımsal bu örnekte çıktı şu biçimde olur:
Kod:
[0 1 2 3] (4,)
[4 5 6] (3,)
[7 8 9] (3,)
Burada 10 eleman 3 parçaya eşit dağıtılamadığı için ilk parça 4, diğer parçalar 3'er eleman içerir. Parçaların tam olarak aynı boyutta olması gerekiyorsa bu sonuç uygun değildir; o durumda eleman sayısını veya parça sayısını yeniden belirlemelisiniz.
split ve array_split arasındaki seçim
Aşağıdaki ayrım hangi işlevi kullanmanız gerektiğini gösterir.| İşlev | Ne zaman kullanılır? | Bölünemeyen uzunlukta davranış |
|---|---|---|
np.split() | Parçaların eşit boyutta olması gerektiğinde | Hata verir |
np.array_split() | Dizi mümkün olduğunca dengeli parçalara ayrılacaksa | Parça boyutlarını farklılaştırabilir |
array_split() daha esnek seçimdir.İki boyutlu diziyi satır veya sütunlara göre bölme
Alt parçalara ayırma işlemi yalnızca tek boyutlu diziler için değildir. İki boyutlu bir dizideaxis parametresi, bölmenin hangi yönde yapılacağını belirler. axis=0 satırları, axis=1 sütunları böler.
Python:
import numpy as np
dizi = np.arange(12).reshape(3, 4)
satir_parcalari = np.split(dizi, 3, axis=0)
sutun_parcalari = np.split(dizi, 2, axis=1)
print("Satır parçaları:")
for parca in satir_parcalari:
print(parca)
print("Sütun parçaları:")
for parca in sutun_parcalari:
print(parca)
Girdi dizisi şu şekildedir:
Kod:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
axis=0 ile 3 parçaya bölündüğünde her parça bir satır ve dört sütun içerir. axis=1 ile 2 parçaya bölündüğünde ise her parça üç satır ve iki sütun içerir. Yani axis değeri, verinin içeriğini değil, dizinin hangi boyutunun kesileceğini belirler.Belirli kesme noktalarıyla bölme
Parça sayısını vermek yerine kesme noktalarını da belirleyebilirsiniz. Örneğin aşağıdaki kullanım diziyi 3. ve 7. indislerden böler:
Python:
import numpy as np
dizi = np.arange(10)
parcalar = np.split(dizi, [3, 7])
print(parcalar)
Çıktı şöyledir:
Kod:
[array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9])]
Buradaki
[3, 7] değerleri parça sayısı değildir; bölme sınırlarının indisleridir. Bu nedenle parçaların boyutları birbirinden farklı olabilir. İndisler sıralı verilmelidir; sınırların anlamı seçtiğiniz axis değerine göre değişir.Sonucu kontrol etme
Bölme işleminden sonra her parçanın boyutunushape ile kontrol edin. Özellikle çok boyutlu dizilerde bu kontrol, yanlış eksen seçimini fark etmenizi sağlar.
Python:
for sira, parca in enumerate(parcalar):
print(sira, parca.shape)
np.split() hata veriyorsa ilk kontrol edilmesi gerekenler, dizinin ilgili eksendeki uzunluğu ile istediğiniz parça sayısının uyumlu olup olmadığıdır. Eşit boyut zorunlu değilse np.array_split() kullanın; eşit boyut zorunluysa bölme işleminden önce diziyi uygun uzunlukta yeniden düzenleyin.