import numpy as np
6 elemanlı rastgele tamsayılardan oluşan bir numpy dizisi oluşturalım
x1=np.random.randint(10, size=6)
x1
2 boyutlu 3 x 4 lük bir numpy dizisi oluşturalım. Yani bir matris.
x2=np.random.randint(10, size=(3,4)) # 3
x2
x3 = np.random.randint(10, size=(3, 4, 5)) # Üç boyutlu bir numpy dizisi. Yani bir tansör
x3
x3.ndim # x3 dizisinin boyut sayısı
x3.shape # x3'ün şekli
x3.size # x3'ün toplam eleman sayısı
x3.dtype # x3'ün data tipi
x1
x1[0] # x1'in ilk elemanı
x1[-1] # x1'in son elemanı
x2
x2[0,0] # 1.satır 1.sütun elemanı
x2[1, 2] # 2. satır 3. sütun elemanı
x2[0,0] = 49 # 1.satır 1.sütun elemanını değiştirelim
x2
x1
x1[0]=-3.1 # bu sayı -3'e yuvarlanacak. zira x1 bir tamsayı dizisi
x1
x=np.arange(10)
x
x[start:stop:step]
komutu
x[3:5] # x dizisinin 3. indeksten 5. indekse olan elemanlarını görelim
x[1:8:2] # x'in 1. indeksten 8.indekse elemanlarını 2'şer atlayarak görelim
x[::-2]
y='merhaba' # python dizilerinde de benzer bir işlem uygulayabiliriz.
y[::-2]
x2
x2.ndim
x2[0:2,1:3] # x2'nin ilk iki satırı ve 2. 3. sütünlarının kesişim matrisi
x2[:,1] # x2'nin 1. sütunu. Dikkat sonuç bir satır vektörü.
Lineer cebirde satır vektörü ve sütun vektörü farklı nesnelerdir. Bu ayrım numpy'da yok. Numpy'da bir array boyutu olan bir nesne. 1 boyutlu nesneler vektör, 2 boyutlu nesneler matris, 2den büyük boyutlu nesneler tensör. Eğer sütun vektörü oluşturmak istersek, 2 boyutlu bir array oluşturmamız lazım.
xx=np.random.randint(10, size=(3, 1))
xx
xx.ndim
y=x2[:2,:2] # x2 nin ilk iki satır ve ilk iki sütunundan oluşan alt matrise x2 diyelim
y
y[0,:]=np.array([-3,0]) # y'nin birinci satırını değiştirelim
y
x2 # süpriz. x2'de değişti. Bu davranışı bekliyor muyduk?
Aslında y yeni bir array değil. Sadece x2 array'inin bir alt matrisine verdiğimiz isim. Dolayısıyla y'de yapacağımız her işlem, x2'yi de etkiler.
z=x2
z[1,1]=84
z
x2
y
Yeni bir isme, bir array'i aşağıdaki gibi kopyalayabiliriz.
w = y.copy()
w
w[0,0]=13
w
y # w'da yapılan işlem y'yi değiştirmedi.
g = np.arange(12)
Bir dizinin şeklini değiştirmek için reshape
fonksiyonunu kullanırız.
g
g.reshape((2,6))
g.reshape((3,4))
g.reshape((4,3))
g.reshape((2,8)) # Eğer eleman sayısından daha fazla veya daha az bir şekle dönüştürmek istersek hata mesajı alırız.
g.reshape((2,2))
x = np.array([1, 2, 3])
x
x.ndim
y=x.reshape((1,3)) # bu işlem bir boyutlu x array'inden iki boyutlu bir y array'i oluşturur.
y
y.ndim
z=x.reshape((3, 1, 1))
z