koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da iki boyutlu array nasıl tanımlanır?

Aşağıdaki gibi başlangıç boyutu olmayan iki boyutlu bir dizi tanımlamak isteyelim:

Matrix = [][]

Bunu yapmak işe yaramayacaktır..

Başlangıç boyutu vermeyi denemek de yine yanlış olacak ve hata verecek:

Matrix = [5][5]

Hata:

Traceback ...
IndexError: list index out of range

Peki python’da iki boyutlu bir array nasıl oluştururuz?


Teknik olarak başlatılmamış bir diziyi diziye eklemeye çalışıyoruz. Öğeleri eklemeden önce dış listeyi listelerle başlatmamız gerekir; Python buna “list comprehension” adını verir.

# 5 listesi olan ve her birinde 8 öğesi olan, her biri 0'a eşitlenmiş liste oluşturur
w, h = 8, 5
Matrix = [[0 for x in range(w)] for y in range(h)] 

#artık listeye öğe ekleyebiliriz:

Matrix[0][0] = 1
Matrix[6][0] = 3 # hata! range... 
Matrix[0][6] = 3 # uygun

Matrisin “y” adresinin majör olduğunu, başka bir deyişle, “y indexi” nin “x indexi” nden önce geldiğini unutmayın.

print Matrix[0][0] # Çıktı 1
x, y = 0, 6 
print Matrix[x][y] # Çıktı 3; index'e dikkat! 

Bunları istediğiniz gibi adlandırabilseniz de, hem iç hem de dış listeler için “x” kullanırsanız ve kare olmayan bir Matris istiyorsanız, dizine eklemede ortaya sorunlar çıkabilir. Bu yüzden farklı isimlendirmeleri kullanmanız yararlı olur.

Aşağıda, listelerin listesini oluşturmak için daha kısa bir gösterim verilmiştir:

matrix = [[0]*5 for i in range(5)]

Ne yazık ki bundan daha kısa bir şeye, mesela 5*[5*[0]]‘e, kısaltmak işe yaramaz çünkü bu, aynı listenin 5 kopyasını oluşturur. Bu yüzden öğelerden birini değiştirdiğinizde hepsi değişir

>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]

Boş bir matris oluşturmak istiyorsanız, doğru söz dizimi aşağıdaki gibi olacaktır:

matrix = [[]]

Gerçekten bir matris istiyorsanız numpy kullanabilirsiniz. Matris işlemleri çoğunlukla iki boyutlu bir dizi türü kullanır. Yeni bir dizi oluşturmanın birçok yolu bulunur; En kullanışlı olanlardan biri, bir boyut parametresi alan ve verilen boyutun bir dizisini döndüren ve değerleri sıfıra başlatılan zeros işlevdir:

>>> import numpy
>>> numpy.zeros((5, 5))
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])

İki boyutlu diziler ve matrisler oluşturmanın diğer bazı yolları da aşağıdaki gibi olacaktır

numpy.arange(25).reshape((5, 5))         # 1-B oluştur ve yeniden boyutlandır
numpy.array(range(25)).reshape((5, 5))   # Python range'i ver ve yeniden boyutlandır
numpy.array([5] * 25).reshape((5, 5))    # Python listesi ver ve yeniden boyutlandır
numpy.empty((5, 5))                      # ayır, ama oluşturma
numpy.ones((5, 5))                       # sıfırlarla oluştur

numpy ayrıca bir matrix türü de sağlar, ancak artık kullanımı önerilmemektedir ve gelecekte kaldırılabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top