logologo
Ai badge logo

Bu madde yapay zeka desteği ile üretilmiştir.

Numpy Kütüphanesi

fav gif
Kaydet
viki star outline

NumPy (Numerical Python), yüksek performanslı bilimsel hesaplamalar için kullanılan açık kaynaklı bir Python kütüphanesidir. Sayısal verilerle etkin çalışmayı sağlar ve çok boyutlu diziler (arrays), matrisler ve bu diziler üzerinde yüksek seviyeli matematiksel işlemler gerçekleştirmek için kapsamlı araçlar sunar. Python programlama dilinde veri analizi, makine öğrenimi, görüntü işleme, sinyal işleme gibi birçok alanda temel taşlardan biri olarak kabul edilir.

Tarihçe

NumPy'nin kökeni, 1995 yılında Jim Hugunin tarafından geliştirilen Numeric adlı Python kütüphanesine dayanır. Daha sonra Travis Oliphant, 2005 yılında Numeric ile Numarray adlı başka bir projenin güçlü yönlerini birleştirerek NumPy'yi geliştirmiştir. NumPy, zamanla Python bilimsel ekosisteminin temel yapı taşlarından biri haline gelmiştir.

  • 1995: Jim Hugunin tarafından Numeric’in oluşturulması.
  • 2001: Numarray adlı alternatifin ortaya çıkışı.
  • 2005: Travis Oliphant, NumPy’yi geliştirerek Numeric ve Numarray’ı birleştirdi.
  • 2010’lar: Pandas, SciPy, Scikit-learn gibi kütüphanelerin gelişmesiyle NumPy'nin kullanımı arttı.
  • 2020 ve sonrası: NumPy, GPU destekli alternatifler (CuPy gibi) ile birlikte hibrit yapılar için temel işlevler sağlamaya devam etmektedir.

Temel Özellikleri

  • Çok Boyutlu Diziler (ndarray): NumPy’nin en temel veri yapısıdır. Tek boyutlu vektörlerden çok boyutlu tensörlere kadar veri yapıları oluşturulabilir.
  • Vektörel İşlemler: Döngüler yerine vektörel işlemlerle çok daha hızlı hesaplamalar yapılabilir.
  • Yüksek Performans: C diliyle yazıldığı için oldukça hızlıdır.
  • Yaygın Fonksiyonlar: Lineer cebir, Fourier dönüşümü, istatistiksel analiz gibi yüzlerce yerleşik fonksiyon içerir.
  • Broadcasting: Farklı boyutlardaki diziler üzerinde otomatik olarak işlem yapılmasını sağlar.
  • Entegre Edilebilirlik: C/C++ ve Fortran gibi dillerle kolayca entegre edilebilir.

Kullanım Alanları

  1. Bilimsel Hesaplamalar ve Araştırmalar: Fizik, kimya, biyoloji gibi alanlarda veri analizi ve simülasyonlar.
  2. Makine Öğrenmesi ve Yapay Zeka: Veri ön işleme ve matris işlemleri için.
  3. Görüntü İşleme: Piksel bazlı işlemler ve filtreleme.
  4. Finansal Modelleme: Risk analizi, regresyon, zaman serileri.
  5. Veri Analizi: Pandas ve benzeri kütüphanelerle birlikte kullanılmak üzere veri temizleme ve analiz süreçlerinde.
  6. Simülasyon ve Oyun Fiziği: Sayısal modelleme ve hesaplama yoğun işlemler.

Temel NumPy Kodları

import numpy as np
# 1) NumPy Dizileri Oluşturma
a = np.array([1, 2, 3])                   # Tek boyutlu dizi
b = np.array([[1, 2], [3, 4]])            # İki boyutlu dizi (matris)
c = np.array([[[1], [2]], [[3], [4]]])    # Üç boyutlu dizi (tensor)
# 2) Dizi Boyut Bilgileri
print(a.ndim)        # Boyut sayısı (1)
print(b.shape)       # Şekil (2,2)
print(c.size)        # Toplam eleman sayısı (4)
print(b.dtype)       # Veri tipi (int64)
# 3) Aritmetik İşlemler
x = np.array([1, 2, 3]); y = np.array([10, 20, 30])
print(x + y)         # Toplama → [11 22 33]
print(y - x)         # Çıkarma → [9 18 27]
print(x * y)         # Çarpma → [10 40 90]
print(y / x)         # Bölme → [10. 10. 10.]
print(x ** 2)        # Üs alma → [1 4 9]
# 4) Hazır Dizi Oluşturma Fonksiyonları
print(np.zeros((2, 3)))           # 2x3 sıfırlar matrisi  
print(np.ones(4))                 # [1. 1. 1. 1.]
print(np.full((2, 2), 7))         # 2x2 sabit matris
print(np.eye(3))                  # 3x3 birim matris
print(np.arange(0, 10, 2))        # [0 2 4 6 8]
print(np.linspace(0, 1, 5))       # [0.   0.25 0.5  0.75 1.  ]
# 5) Dizi Şekillendirme
a = np.arange(12).reshape(3, 4); print(a)   # 3x4 matris
print(a.flatten())                          # Tek boyuta indir
print(a.T)                                  # Transpoz (satırsütun)
# 6) İstatistiksel Fonksiyonlar
d = np.array([1, 2, 3, 4, 5])
print(np.mean(d))            # Ortalama
print(np.median(d))          # Medyan
print(np.std(d))             # Standart sapma
print(np.var(d))             # Varyans
print(np.sum(d))             # Toplam
print(np.min(d), np.max(d))  # Min ve max
# 7) Koşullu Filtreleme (Boolean Indexing)
a = np.array([10, 20, 30, 40, 50])
print(a[a > 20])         # 20'den büyükler → [30 40 50]
print(a[a == 30])        # 30'a eşit olan → [30]
# 8) Broadcasting (Yayılım)
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10, 20, 30])
print(a + b)             # Her satıra b vektörünü ekler
# 9) Lineer Cebir (Matris İşlemleri)
A = np.array([[1, 2], [3, 4]]); B = np.array([[2, 0], [1, 2]])
print(np.dot(A, B))                    # Matris çarpımı
print(np.linalg.det(A))                # Determinant
print(np.linalg.inv(A))                # Ters matris
vals, vecs = np.linalg.eig(A)          # Özdeğer ve özvektör
print(vals); print(vecs)
# 10) Rastgele Sayılar
print(np.random.rand(3))                                             # [0,1) arası 3 sayı
print(np.random.randn(3))                                            # Normal dağılım
print(np.random.randint(1, 10, (2, 2)))                              # 1-9 arası 2x2 matris
arr = np.array([1, 2, 3, 4, 5]); np.random.shuffle(arr); print(arr)  # Dizi karıştır
# 11) Dosya Okuma/Yazma
data = np.array([[1, 2], [3, 4]])
np.save("veri.npy", data); print(np.load("veri.npy"))         # .npy ile kaydet/yükle
np.savetxt("veri.txt", data); print(np.loadtxt("veri.txt"))   # .txt ile kaydet/yükle

Python Ekosistemindeki Önemi

NumPy, Python ekosisteminde bilimsel ve teknik programlamanın bel kemiğidir. Diğer birçok popüler kütüphane, NumPy dizilerini temel alır ya da onlarla entegre çalışır. Örnekler:

  • Pandas: Tablolu veri yapılarında (DataFrame) NumPy dizilerini kullanır.
  • SciPy: Bilimsel hesaplamalar için NumPy üzerine inşa edilmiştir.
  • Matplotlib: Görselleştirme kütüphanesi, grafik verilerini NumPy dizileri üzerinden işler.
  • Scikit-learn: Makine öğrenimi algoritmaları NumPy dizileri üzerinde çalışır.
  • TensorFlow / PyTorch: NumPy benzeri tensör yapıları kullanır, çoğu zaman NumPy verileriyle dönüşümlüdür.

Ayrıca NumPy, büyük veri setleriyle çalışırken RAM kullanımını optimize eder ve paralel işlem yapılarında (multi-threading, GPU hesaplama) temel veri yapısı olarak tercih edilir.

Alternatifler ve Gelişmiş Sürümler

  • CuPy: NVIDIA CUDA mimarisi üzerinde çalışan NumPy uyumlu bir kütüphane. GPU hızlandırmalı işlemler için kullanılır.
  • JAX: NumPy API’sine benzer bir arayüz sunar, otomatik türev alma ve GPU/TPU desteği sağlar.
  • XND / Dask: Daha büyük veri setleri ve paralel işlemler için ölçeklenebilir alternatiflerdir.


NumPy, Python’un bilimsel hesaplama gücünü büyük ölçüde artıran ve sayısal işlemlerde devrim yaratan bir kütüphanedir. Geniş API’si, hızı ve esnekliği ile veri analitiği ve yapay zeka başta olmak üzere birçok alanda yaygın olarak kullanılmakta, Python’u güçlü bir bilimsel hesaplama platformu haline getirmektedir.

Kaynakça

Harris, Charles R., K. Jarrod Millman, Stefan J. van der Walt, Ralf Gommers, Pauli Virtanen, Dylan Cournapeau, et al. “Array Programming with NumPy.” Nature 585, no. 7825 (2020): 357–362. https://doi.org/10.1038/s41586-020-2649-2.


NumPy. NumPy Documentation. https://numpy.org/doc/stable/. Erişim tarihi: 16.04.2025.


NumPy. NumPy GitHub Repository. https://github.com/numpy/numpy. Erişim tarihi: 16.04.2025.


NumPy. NumPy Official Website. https://numpy.org/. Erişim tarihi: 16.04.2025.

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
Ana YazarYasin Şahin16 Nisan 2025 14:41
KÜRE'ye Sor