Merve Tatlıdil
Data Runner
Published in
5 min readJul 19, 2020

--

Merhaba bu yazımda Numpy kütüphanesinden bahsedeceğim. NumPy (Numerical Python), çok boyutlu dizilerle ve matrislerle çalışmamızı sağlayan ve matematiksel işlemler yapabileceğimiz Python dili kütüphanelerindendir. Numpy bugünlerde veri bilimciler tarafından fazlasıyla kullanılmakta.

Numpy ile matematiksel işlemler yapılabilir ve bu işlemler, Python’un dahili dizilerini kullanarak mümkün olana oranla daha verimli ve daha az kodla yürütülür. NumPy paketinin temelinde, ndarray nesnesi vardır. Bu, homojen veri türlerinin n-boyutlu dizilerini kapsar ve birçok işlem performans için derlenmiş kodda gerçekleştirilir. NumPy dizileri ile standart Python dizileri arasında bazı farklar var.

Standart Python listeleri dinamik olarak büyüyebilen diziler iken, NumPy dizileri oluşturulurken sabit bir boyuta sahiptir.Hatırlarsanız bir önceki yazı olan veri yapıları yazısında listelerden bahsetmiştik ve listelerde değişiklik yapabiliyorduk.Bir ndarray boyutunu değiştirdiğinizde yeni bir dizi oluşturulur ve orjinali silinir.

ndarray.ndim : Aksis (boyut) sayısını verir. Bu da “rank” olarak adlandırılır.

ndarray.shape : Dizi boyutunu verir. a X b matrisi (a,b) olarak döner.

ndarray.size : Dizideki eleman sayısını verir. Yani a*b işleminin sonucudur.

ndarray.dtype : Dizideki eleman türünü döndürür.

import numpy as np #kütüpheyi kullanabilmek için import etmeliyiza = np.arange(15).reshape(3, 5) #arange()metodu ile 0’dan 15’e kadar bir #dizi yaratıyoruz.reshape() metodu ile 3*5’lik bir matris şekillendirmiş #oluyoruz.a #oluşturduğumuz a array’ini görelim
>> array [[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]]
a.shape #a’nın boyutları
>> (3, 5)
a.ndim #a’nın rankı
>> 2
a.dtype.name #eleman türünü döndürmek istersek
>> dtype(‘int32’)
a.size #a’nın eleman sayısı
>> 15
type(a) #oluşturduğumuz a array’inin türünü görmek istersek
>> numpy.ndarray'

Yukarıdaki satırda kütüphanemizi import ederken numpy kütüphanesini “np” olarak kısalttık.Siz isterseniz daha farklı şekilde de kısaltabilirsiniz fakat literatürde bu şekilde kısaltılmakta.

Array Oluşturma

En basit haliyle bir numpy array oluşturalım.

import numpy as np
b = np.array([1,2,3,4,5])
b
>> array([1,2,3,4,5])

Elemanlarının hepsi 0 olan 3*4 array oluşturmamızı sağlar.

import numpy as np
c = np.zeros((3,4))
c
>> array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])

Elemanlarının hepsi 1 olan 3*3 array oluşturmamızı sağlar.

import numpy as np
d = np.ones((3,3))
d
>> array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])

10’dan 70’e kadar olan sayıları 10’ar 10’ar arttırarak bir bir array oluşturur.

e = np.arange(10,70,10)
e
>> array([10, 20, 30, 40, 50, 60])

3*3 bir birim matris oluşturmamızı sağlar.

f = np.eye((3))
f
>> array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

Elemanları 0’dan 10’a kadar olan bir array oluşturmamızı sağlar.

g = np.arange(10)
g
>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

0 ile 2 arasında bu sayılarda dahil olmak üzere 9 sayı oluşturduk.

h = np.linspace(0,2,9)
h
>> array([0., 0.25, 0.5, 0.75, 1., 1.25, 1.50, 1.75, 2.])

Elemanlarının hepsi 5 olan 2*4 bir array oluşturmamızı sağlar.

ı = np.ones((2,4))*5
ı
>> array([[5., 5., 5., 5.],
[5., 5., 5., 5.]])

Elemanları aynı olan array oluşturmak için full() metodunu da kullanabiliriz.(2,3) dizinin boyutunu belirtirken, matrisin 8’lerden oluşmasını istedik.

k = np.full((2,3),8)
k
>> array([[8, 8, 8],
[8, 8, 8]])

0 ve 50 arasında 5 tane rastgele sayı üret

l = np.random.randint(0,50,5)
l
>> array([1,39,36, 43, 1])

0 ile 1 arasında 5 random sayı üret.

m = np.random.rand(5)
m
>> array([0.8251616,0.137013,0.43805667, 0.5694103, 0.59116609])

Eleman Seçme(Indeksleme)

Array elemanlarına onları düzenlemek, değiştirmek veya başka işlemler uygulamak için erişmek isteyebiliriz. Array’leri [ ] ile temsil ediyoruz.Elemanlarına erişmek istediğimizde de yine bunu kullanırız.

n_array = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ,10, 11, 12, 13 ,14])n_array = n_array.reshape(3,5)#array’i 3*5 formatına getirdikn_array
>> array [[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[10,11,12,13,14]]
n_array[0] #array 1.satırına ulaşmak istersek
>> [0 1 2 3 4]
n_array[0:2] #array 1.ve 2.satırını istersek
>> [[0 1 2 3 4]
[5 6 7 8 9]]
n_array[0][0] #array 1.satırın ilk elemanını yazdıralım
>> 0
n_array[:,0] #ilk sütunu alalım
>> ([[0],[5],[10])
n_array[:,0:2] #1.ve 2.sütunu alalım
>> ([[0 1],
[5 6],
[10 11]])
n_array[2,3] #2.satır 3.sütuna gitmemizi istiyor.Array’lerde saymaya #0’dan başladığımızı unutmayalım!
>> 13
n_array[::-1] #bu ifade ile ters çevirmiş oluruz.
>> array [[10,11,12,13,14],
[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]]

Matematiksel İşlemler

numpy_array = np.array([[1,2,3],
[4,5,6],
[7,8,9]]) #yeni bir array oluşturduk
print(numpy_array.sum())#array elemanlarının toplamı
>>45
print(numpy_array.max())#en büyük eleman
>>9
print(numpy_array.min())#en küçük eleman
>>1
#axis = 1 : satırı alır#axis = 0 : sütunları alırprint(numpy_array.sum(axis = 1))#satırları toplamak için
>>[ 6 15 24 ]
print(numpy_array.sum(axis = 0)) #sütunları toplamak için
>>[12 15 18]

numpy_array.mean() : aritmetik ortalamayı bulur.

numpy_array.median() : ortayı verir.

numpy_array.var() : varyans bulur.

numpy_array.std() : standart sapmasını bulur.

num_array = np.array([[1,2],
[5,6]])
print(num_array + num_array) #array toplamı
>>[[2,4],
[10,12]]
print(num_array + 2) #bir array'e bir sayı ekleme
>> [[3,4],
[7,8]]
print(num_array - num_array)#array’ler için çıkarma işlemi
>>[[0,0],
[0,0]]
print(num_array * num_array)#array’ler için çarpma işlemi
>> [[1,4],
[25,36]]
print(num_array * 3)#bir array’in bir sayıyla çarpımı
>> [[3,6],
[15,18]]
print(num_array / num_array)#array’ler için bölme işlemi
>>[[1.,1.],
[1.,1.]]

Transpoz Bulma

Matrislerin satırını sütun, sütunlarını satır yapmaya transpoz alma işlemi denir.Bir array’in transpozu .T ile bulunur.

list_array = np.array([[1,2],
[4,5],
[7,8]])
print(list_array.T)
>> [[1 4 7]
[2 5 8]]

Matris Çarpımı

a1 matrisinin kolon sayısı a2 matrisinin satır sayısına eşitse a1 x a2 çarpımı tanımlıdır.Bu koşul çarpma işlemi için gerekli bir kısıtlamadır.Bu koşulu sağlamayan iki matris çarpılmaz.a1 (3,2) bir matrisken, a2 matrisi (2,2) matristir.Çarpım sonucunun (3,2) bir matris olmasını bekliyoruz.

a1 = np.array([[1,2],
[2,0],
[3,1]])
a2 = np.array ([[4,3],
[1,2]])
print(np.dot(a1,a2))
>> [[6,7],
[8,6],
[13,11]]

Matris Birleştirme

· Birleştirme işlemiyle, iki veya daha fazla matris içeriğini tek bir dizide birleştirebiliriz.

· SQL’de tabloları bir anahtara göre birleştiriyoruz, Numpy’da ise dizileri eksenlerle birleştiririz.

· Eksen açıkça belirtilmezse, 0 olarak kabul edilir.

a3 = np.array([[1,2],
[2,0],
[3,1]])
print(np.concatenate([numpy_array, numpy_array], axis =0)) #Satıra göre birleştirmek istersek, satır = 0
>> [[1,2]
[2,0]
[3,1]
[1,2]
[2,0]
[3,1]]
print(np.concatenate([numpy_array, numpy_array], axis =1)) #Sütuna göre birleştirme yapmak istersek, sütun = 1
>> [[1 2 1 2 ]
[2 0 2 0 ]
[3 1 3 1 ]]

Sağlıkla ve veriyle kalın!

Kodlara https://github.com/mrw-ttldl/Medium_Yazilarinin_Kodlari linkinden ulaşabilirsiniz.

--

--