Garfield
YZF Admin
Yeni değeri eklemeden önce dizinin boyutunu
Burada yeni bir satır ekleyecekseniz satırın üç elemanlı olması gerekir. Yeni bir sütun ekleyecekseniz sütunun iki elemanlı olması gerekir. Eklenecek dizinin boyutu ve seçilen eksen dışındaki ölçüleri mevcut diziyle uyumlu olmalıdır.
Tek boyutlu bir dizinin şekli
İşlem sonunda özgün dizi değiştirilmez;
İki boyutlu dizide satır eklerken
Sütun eklemek için
Aşağıdaki karşılaştırma, eklenecek verinin hangi biçimde hazırlanacağını gösterir.
Tablodaki kuralın nedeni, birleştirme ekseni dışındaki ölçülerin korunmasıdır. Örneğin
Örneğin şu kodda yeni satırın bir elemanı fazladır:
Mevcut dizinin şekli
Tek boyutlu bir değeri iki boyutlu diziye doğrudan eklemek istediğinizde de biçime dikkat edin.
Ekleme işleminden sonra
ndim ve her eksendeki uzunluğunu shape ile kontrol edin. Ekleme işlemi için np.append() veya daha kontrollü biçimde np.concatenate() kullanırken, seçtiğiniz eksen dışındaki boyutların aynı olduğundan emin olun. Böylece tek boyutlu diziye tek değer, iki boyutlu diziye ise satır ya da sütun biçimi doğru hazırlanarak eklenir; uyumsuz şekiller hata verir veya beklenmeyen bir sonuç oluşturabilir.Önce dizinin boyutunu ve şeklini kontrol edin
ndim dizinin kaç eksenli olduğunu, shape ise her eksenin kaç eleman içerdiğini gösterir. Örneğin (2, 3) şekli, iki satır ve üç sütundan oluşan iki boyutlu bir dizi anlamına gelir.
Python:
import numpy as np
dizi = np.array([[1, 2, 3],
[4, 5, 6]])
print(dizi.ndim) # 2
print(dizi.shape) # (2, 3)
Burada yeni bir satır ekleyecekseniz satırın üç elemanlı olması gerekir. Yeni bir sütun ekleyecekseniz sütunun iki elemanlı olması gerekir. Eklenecek dizinin boyutu ve seçilen eksen dışındaki ölçüleri mevcut diziyle uyumlu olmalıdır.
Tek boyutlu diziye değer ekleme
Tek boyutlu bir dizinin şekli
(n,) biçimindedir. Tek bir sayı eklemek için np.append() kullanılabilir.
Python:
import numpy as np
dizi = np.array([10, 20, 30])
yeni_dizi = np.append(dizi, 40)
print(yeni_dizi) # [10 20 30 40]
print(yeni_dizi.shape) # (4,)
İşlem sonunda özgün dizi değiştirilmez;
np.append() yeni bir dizi döndürür. Bu nedenle sonucu bir değişkene atamak gerekir. dizi = np.append(dizi, 40) yazarsanız değişken artık yeni diziyi gösterir.İki boyutlu diziye satır ekleme
İki boyutlu dizide satır eklerken
axis=0 seçilir. Mevcut dizi iki sütunluysa eklenecek satır da iki elemanlı olmalıdır.- Mevcut dizinin şeklini kontrol edin.
dizi.shapedeğerinin örneğin(2, 2)olduğunu doğrulayın. - Yeni satırı iki boyutlu biçimde hazırlayın.
[[50, 60]]ifadesi bir satır ve iki sütunluk şekil oluşturur. - Satırı ilk eksende birleştirin.
np.concatenate((dizi, yeni_satir), axis=0)çağrısının sonucunda satır sayısı artar. - Yeni şekli kontrol edin. Başlangıç şekli
(2, 2)ise beklenen sonuç(3, 2)olur.
Python:
import numpy as np
dizi = np.array([[1, 2],
[3, 4]])
yeni_satir = np.array([[5, 6]])
sonuc = np.concatenate((dizi, yeni_satir), axis=0)
print(sonuc)
# [[1 2]
# [3 4]
# [5 6]]
print(sonuc.shape) # (3, 2)
np.append(dizi, yeni_satir, axis=0) da aynı türden bir işlem yapabilir. Ancak concatenate() kullanmak, hangi dizilerin hangi eksende birleştirildiğini daha açık gösterir.Sütun eklerken boyutları eşleştirin
Sütun eklemek için
axis=1 kullanılır. Bu kez satır sayısı değişmediği için yeni sütunun satır sayısı mevcut diziyle aynı olmalıdır.
Python:
import numpy as np
dizi = np.array([[1, 2],
[3, 4]])
yeni_sutun = np.array([[10],
[20]])
sonuc = np.concatenate((dizi, yeni_sutun), axis=1)
print(sonuc)
# [[ 1 2 10]
# [ 3 4 20]]
print(sonuc.shape) # (2, 3)
Aşağıdaki karşılaştırma, eklenecek verinin hangi biçimde hazırlanacağını gösterir.
| İşlem | Eksen | Yeni verinin şekli | Beklenen sonuç |
|---|---|---|---|
| Satır ekleme | axis=0 | (1, sütun sayısı) | Satır sayısı artar |
| Sütun ekleme | axis=1 | (satır sayısı, 1) | Sütun sayısı artar |
| Tek boyutlu değeri sona ekleme | Eksen belirtilmez | Tek sayı veya tek boyutlu dizi | Dizinin uzunluğu artar |
(2, 2) şekilli bir diziye axis=0 ile (1, 3) şekilli satır eklenemez; sütun sayıları iki ve üç olduğu için uyumsuzdur.Hata alırsanız şekilleri doğrudan karşılaştırın
Örneğin şu kodda yeni satırın bir elemanı fazladır:
Python:
import numpy as np
dizi = np.array([[1, 2],
[3, 4]])
yeni_satir = np.array([[5, 6, 7]])
# np.concatenate((dizi, yeni_satir), axis=0)
Mevcut dizinin şekli
(2, 2), yeni satırın şekli ise (1, 3) olur. axis=0 ile satır eklenirken sütun sayıları aynı kalmalıydı; bu nedenle işlem boyut uyumsuzluğu hatası verir. Çözüm, yeni satırı mevcut sütun sayısına göre düzeltmektir:
Python:
yeni_satir = np.array([[5, 6]])
sonuc = np.concatenate((dizi, yeni_satir), axis=0)
print(sonuc.shape) # (3, 2)
Tek boyutlu bir değeri iki boyutlu diziye doğrudan eklemek istediğinizde de biçime dikkat edin.
np.array([5, 6]) şekli (2,) olan tek boyutlu bir dizidir; satır olarak kullanmak için reshape(1, -1), sütun olarak kullanmak için reshape(-1, 1) uygulanabilir.
Python:
yeni_deger = np.array([5, 6])
yeni_satir = yeni_deger.reshape(1, -1)
sonuc = np.concatenate((dizi, yeni_satir), axis=0)
print(sonuc)
# [[1 2]
# [3 4]
# [5 6]]
reshape(1, -1) iki elemanı bir satıra, reshape(-1, 1) ise iki elemanı bir sütuna dönüştürür. Ancak reshape() veriyi tamamlamaz veya eksik elemanları tahmin etmez; yalnızca mevcut elemanların düzenini değiştirir. Bu nedenle hedef şeklin eleman sayısı mevcut veriyle uyumlu olmalıdır.Son kontrolü yapın
Ekleme işleminden sonra
sonuc.shape değerini beklenen şekille karşılaştırın. Satır eklediyseniz satır sayısının, sütun eklediyseniz sütun sayısının bir arttığını; değişmeyen eksenin ise önceki değerle aynı kaldığını kontrol edin. sonuc.ndim değeri de beklenmedik biçimde değişmişse yeni veriyi tek boyutlu yerine satır veya sütun şeklinde yeniden biçimlendirmeniz gerekir.
Son düzenleme: