← Konulara dön

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 3×33 \times 3 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 CC matrisi için her bir eleman:

Cij=k=13Aik×BkjC_{ij} = \sum_{k=1}^{3} A_{ik} \times B_{kj}

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 üzerinde np.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.