Özel Numpy dizileri/matrisleri

1. Özel diziler oluşturma

Bazen içeriğini tek tek bizim belirleyebileceğimiz dizilerin yanı sına, belli özelliklere sahip diziler oluşturmak isteyebiliriz. Numpy bunu yapabilmemiz için çok kullanışlı metotlar içermekte. Gelin onlara bir göz atalım.

● np.arange( )

Bu metod düzenli olarak artan sayılarla dizi oluşturmaya yarar. Eğer sadece sayı değeri girilirse 0'dan başlayıp o değere kadar -son sayı dahil olmamak üzere- birer birer artan değerler üretir.

Buna ek olarak başlangıç değeri verilebilir, hatta adım aralığını bile belirleyebilirsiniz. Aşağıda bahsedilenlerin bir kaç örneğini bulabilirsiniz.

np.arange(10)                       
print a                             # [0 1 2 3 4 5 6 7 8 9]

b = np.arange(2, 10, dtype=float)   # veri türü parametre olarak verilebilir.
print b                             # [ 2.  3.  4.  5.  6.  7.  8.  9.]

c = np.arange(2, 3, 0.10)           
print c                             # [ 2. 2.1  2.2  2.3  2.4  2.5  2.6  2.7  2.8  2.9]

Farklı bir kullanım türü:

Çok gerekli bir kullanım olmasa da eğer sayıları noktalı üretip tamsayı olarak kaydetmek istersek şu şekilde kullanabiliriz:

d = np.arange(0.0, 5, 0.5).astype(int)    # [0 0 1 1 2 2 3 3 4 4]
print d

Eğer veri türünü parametre olarak verirsek garip sonuçlar ile karşılaşabiliriz. Aşağıdaki örnekteki gibi:

d = np.arange(0.0, 5, 0.5, dtype = int)   # [0 0 0 0 0 0 0 0 0 0]
print d

Ayrıca np.arange( ) noktalı sayılar için istenmeyen değerler üretebilmektedir. Özellikle çok küçük değerli noktalı sayılarla çalışırken. Bunun için önerilen komut np.linspace( ) komutudur.

● np.linspace( )

Belirli bir başlangıç ve bitiş aralığında eşit aralıklarla dilimleyerek değerler oluşturmaya yarar. Dilimleme miktarını yine parametre olarak veririz.

Gelin örneklere bakalım:

np.linspace(1., 4., 6)   # [ 1. ,  1.6,  2.2,  2.8,  3.4,  4. ]
np.linspace(0, 50, 9)    # [  0. ,  6.25, 12.5 , 18.75, 25. , 31.25,  37.5 ,  43.75,  50. ]
np.linspace(0, 50, 11)   # [  0.,  5.,  10.,  15.,  20.,  25.,  30.,  35.,  40.,  45.,  50.]

Bazı ipuçları:

  • İstersek np.arange( ) de olduğu gibi son değeri üretilen dizide görmek istemezsek bunu endpoint: false parametresi vererek yapabiliriz. Ama standart hali genellikle tercih edilenidir.

  • Dilimleme miktarını girmezsek standart dilimleme değeri olan 50 seçilecektir.

2. Özel matrisler oluşturma

Bazen belli özelliklere sahip diziler oluşturmak isteyebiliriz. Örneğin içi sadece 0 değerleri veya içi 1 değerleriyle dolu. Bunun için numpy'da hazır metodlar var. İşte şimdi gelin bu metodlara bir göz atalım:

● np.zeros( ) ile sıfır matrisi

İçi tamamen 0 lar ile dolu dizi oluşturur. Parametre olarak matris boyutlarını alır.

a = np.zeros((2,2))   # içi sıfırlar ile dolu dizi
print a               #  "[[ 0.  0.]
                      #    [ 0.  0.]]"  yazdırır

● np.ones( ) ile birler matrisi

np.zeros( ) metodundan farklı olarak içi tamamen 1 lar ile dolu dizi oluşturur. Parametre olarak matris boyutlarını alır.

b = np.ones((1,3))    # içi birler ile dolu dizi
print(b)              # "[[ 1.  1. 1.]]" yazdırır

● np.full( ) sabit matris oluşturmak

Sırasıyla matris boyutlarını ve içinin hangi değerle dolacağını parametre alır. Matrisin tüm elemanları bu değere sahip olur.

c = np.full((2,2), 7)  # Sabit dizi (içi 7 ile dolmuş)
print(c)               #  "[[ 7.  7.]
                       #    [ 7.  7.]]"  yazdırır

● np.eye( ) ile birim matris oluşturmak

Hatırlayacağınız üzere birim matrisler I ile gösterilir ve sadece köşegen değerleri 1 geri kalan kısmı ise 0'lardan oluşur. Bu bir kare matris olduğu için tek bir boyutu girmemiz yeterlidir.

Aşağıdaki örnek kodda 2x2 boyutlarında kare matris oluşturulmuştur.

d = np.eye(2)         # 2x2 boyutlarında birim matris
print(d)              # "[[ 1.  0.]
                      #   [ 0.  1.]]"  yazdırır
d = np.eye(5) ise aşağıdaki birim matrisi oluşturur.
[[ 1.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.]
 [ 0.  0.  0.  1.  0.]
 [ 0.  0.  0.  0.  1.]]

● np.random( ) ile rastgele değerler matrisi

İçi rastgele değerler içeren bir matris oluşturmak isteyebiliriz. Ürettiğimiz matris 0-1 arası değerlerle dolu olacaktır. Boyutlarını istediğimiz değerler ile parametre vererek üretebiliriz.

e = np.random.random((2,2))  # 2x2 boyutlarında rastgele değerler içeren matris
print(e)                     #  "[[ 0.91940167  0.08143941]
                             #    [ 0.68744134  0.87236687]]" muhtemel matris çıktısı

Last updated