Dizi yeniden şekillendirme
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 11/112
- 5 dk
reshape() metodu ile dizinin boyutu değiştirilir; toplam eleman sayısı korunur.
reshape
reshape eleman sayısını değiştirmeden diziye yeni bir şekil verir. Yeni şeklin çarpımı eski size'a eşit olmalıdır:
a = np.arange(6) # [0 1 2 3 4 5]
print(a.reshape(2, 3)) # [[0 1 2] [3 4 5]]
print(a.reshape(3, -1)) # -1: sütun sayısını hesapla -> (3, 2)
# a.reshape(4, 2) ValueError: 6 eleman 8'e sığmazElemanlar satır satır (C sırası) yerleştirilir.
flatten ve transpoz
flatten() diziyi tek boyuta indirir; .T satırları sütun yapar:
m = np.array([[1, 2, 3],
[4, 5, 6]])
print(m.flatten()) # [1 2 3 4 5 6]
print(m.T.shape) # (3, 2)
print(m.T) # [[1 4] [2 5] [3 6]]Görüntü verisinde 28×28 pikseli 784 uzunluklu bir vektöre çevirmek, sinir ağına vermeden önce sık yapılan bir adımdır.
Uygulama Yeniden şekillendir
np.arange(1, 13) dizisini 3 satırlı bir matrise çevir (-1 kullan). Matrisi, ardından transpozunun shape değerini yazdır.
Başlangıç kodu
import numpy as np
a = np.arange(1, 13)
# buraya yazÖrnek çözüm
import numpy as np
a = np.arange(1, 13)
m = a.reshape(3, -1)
print(m)
print(m.T.shape)Beklenen çıktı
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] (4, 3)
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 12 elemanlı bir dizi için hangisi geçersizdir?
- reshape(2, -1)
- reshape(2, 2, 3)
- reshape(5, -1) Doğru cevap
- reshape(3, 4)
Açıklama: 12, 5'e tam bölünmediği için -1 hesaplanamaz ve ValueError oluşur.
2 Diziyi tek boyuta indir.
v = m.____()
v = m.flatten()
Açıklama: flatten her zaman yeni bir tek boyutlu kopya döndürür.
3 İşlemleri sonuç şekilleriyle eşleştir (a = np.arange(12)).
| Kavram | Anlamı |
|---|---|
a.reshape(3, 4) |
(3, 4) |
a.reshape(3, 4).T |
(4, 3) |
a.reshape(2, -1) |
(2, 6) |
a.reshape(2, 6).flatten() |
(12,) |