Array Oriented Programming with NumPy
Algorithms and Programming
Python dilinde şimdiye kadar öğrendiğimiz özelliklerle matrisleri nasıl ifade edeceğimizi biliyoruz. Genellikle matrisleri listelerin listesi şeklinde yazarız. Örneğin:
matris = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
Bu yapı, matrisin her satırını ayrı bir liste olarak tanımlar. Ancak, matris işlemleri özellikle çarpma gibi işlemler, bu yöntemle oldukça karmaşık hale gelebilir.
Matris Çarpımının Zorluğu
İki adet boyutunda matrisin çarpımını düşünelim. Geleneksel yöntemle, her bir satır ile her bir sütunu çarpıp toplamamız gerekir. Bu işlem toplamda 9 farklı çarpım ve toplamayı içerir.
Örneğin:
# İki matrisi tanımlayalım
A = [[a11, a12, a13],
[a21, a22, a23],
[a31, a32, a33]]
B = [[b11, b12, b13],
[b21, b22, b23],
[b31, b32, b33]]
Matris çarpımı sonucu matrisi için her bir eleman:
Bu işlemi Python'da listelerin listesiyle yapmak oldukça karmaşıktır ve uzun kodlar yazmayı gerektirir.
NumPy ile Matris İşlemleri
NumPy (Numerical Python), Python'da nümerik ve bilimsel hesaplamaları kolaylaştıran güçlü bir kütüphanedir. NumPy kullanarak matris işlemlerini çok daha basit ve verimli bir şekilde gerçekleştirebiliriz.
Örneğin, aynı matris çarpımını NumPy ile şöyle yapabiliriz:
import numpy as np
# Matrisleri tanımlayalım
m1 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
m2 = np.array([[9, 8, 7],
[6, 5, 4],
[3, 2, 1]])
# Matrisleri çarpalım
sonuc = np.dot(m1, m2)
print(sonuc)
Sonuç:
[[ 30 24 18]
[ 84 69 54]
[138 114 90]]
Gördüğünüz gibi, kod satır sayısı azaldı ve işlem çok daha okunaklı hale geldi.
NumPy Terminolojisi
NumPy ile çalışırken bazı terminolojileri bilmek önemlidir:
-
Array: Python'daki listeye benzer, ancak NumPy'de kullanılan temel veri yapısıdır. Örneğin:
dizi = np.array([2, 1, 3])
-
Matrix: İki boyutlu array'ler (listelerin listesi) NumPy'de matris olarak adlandırılır.
-
Axis (Eksen): NumPy array'lerinde işlemlerin uygulandığı yönü belirtir.
- Axis 0: Satırlar boyunca (dikey eksen).
- Axis 1: Sütunlar boyunca (yatay eksen).
Axis Kavramı Örnekleri
Bir NumPy array'i düşünelim:
import numpy as np
matris = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
-
Axis 0 (Satırlar):
matris
üzerindenp.sum(matris, axis=0)
işlemi sütunlar boyunca toplayacaktır.- Sonuç:
[12, 15, 18]
-
Axis 1 (Sütunlar):
np.sum(matris, axis=1)
işlemi satırlar boyunca toplayacaktır.- Sonuç:
[6, 15, 24]
Fonksiyonlarda axis
parametresini doğru kullanmak işlemlerin istenilen yönde yapılması için kritiktir.
NumPy'nin Avantajları
NumPy kullanmanın bazı avantajları şunlardır:
- Verimlilik: NumPy array'leri Python listelerine göre daha az bellek kullanır ve daha hızlı çalışır.
- Fonksiyonellik: Matematiksel ve istatistiksel işlemleri gerçekleştiren bir dizi fonksiyon sunar.
- Kolaylık: Matris ve vektör gibi çok boyutlu veri yapılarıyla kolayca çalışmayı sağlar.
NumPy ile Başlarken
NumPy'yi kullanmak için öncelikle kütüphaneyi içe aktarmamız gerekir:
import numpy as np
Array Oluşturma
Bir NumPy array'i oluşturmak için np.array()
fonksiyonunu kullanırız:
# Tek boyutlu array
dizi = np.array([1, 2, 3, 4, 5])
# İki boyutlu array (matris)
matris = np.array([[1, 2], [3, 4]])
Temel İşlemler
NumPy ile temel matematiksel işlemleri kolayca yapabiliriz:
-
Toplama:
a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) toplam = a + b # Sonuç: [5, 7, 9]
-
Çarpma:
carpim = a * b # Eleman bazlı çarpma: [4, 10, 18]
-
Matris Çarpımı:
matris1 = np.array([[1, 2], [3, 4]]) matris2 = np.array([[5, 6], [7, 8]]) sonuc = np.dot(matris1, matris2) # Sonuç: # [[19 22] # [43 50]]
Sonuç
NumPy, Python'da nümerik hesaplamaları ve matris işlemlerini büyük ölçüde kolaylaştıran güçlü bir kütüphanedir. Geleneksel yöntemlerle karmaşık ve uzun kodlarla yapabileceğimiz işlemleri, NumPy ile birkaç satırda ve daha verimli bir şekilde gerçekleştirebiliriz. NumPy'nin terminolojisini ve temel kavramlarını öğrenerek, bilimsel ve matematiksel hesaplamaları projelerimizde etkin bir şekilde kullanabiliriz.
Unicourse ile sınavlardan istediğin notları al.
Türkiye'nin en iyi üniversitelerinden 20.000'den fazla öğrenci sınavlarına Unicourse ile hazırlanıyor. Sen de aramıza katıl.