Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bilgi Bankası


Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

NumPy Nedir?

NumPy Nedir ve Ne İşe Yarar?

NumPy (Numerical Python), Python programlama dili için geliştirilmiş, bilimsel hesaplama alanında yaygın olarak kullanılan bir kütüphanedir. Temelde, çok boyutlu diziler (ndarray) üzerinde yüksek performanslı matematiksel işlemler yapmayı sağlar. NumPy, veri analizi, makine öğrenimi, mühendislik simülasyonları ve daha birçok bilimsel alanda vazgeçilmez bir araçtır. Verimli veri depolama ve işleme yetenekleri sayesinde, büyük veri kümeleriyle çalışırken performansı önemli ölçüde artırır.

  • Temel Amaç: Sayısal hesaplamaları hızlandırmak ve kolaylaştırmak.
  • Çok Boyutlu Diziler: Homojen veri tipine sahip çok boyutlu diziler (ndarray) sunar.
  • Matematiksel Fonksiyonlar: Dizi işlemleri için geniş bir matematiksel fonksiyon yelpazesi sunar (trigonometri, logaritma, istatistiksel fonksiyonlar vb.).
  • Performans: C ve Fortran dillerinde yazılmış optimize edilmiş kod sayesinde yüksek performans sağlar.

Neden NumPy Kullanmalıyız?

NumPy kullanmanın birçok avantajı vardır. İşte en önemlileri:

  1. Hız: NumPy, Python listelerine kıyasla çok daha hızlıdır. Çünkü NumPy dizileri, verileri bitişik bellek bloklarında saklar ve vektörize edilmiş işlemleri kullanır. Bu, döngülerden kaçınarak performansı artırır.
  2. Bellek Verimliliği: NumPy dizileri, Python listelerine göre daha az bellek kullanır. Çünkü NumPy dizileri, aynı tipteki verileri saklar ve bu da bellek kullanımını optimize eder.
  3. Kullanım Kolaylığı: NumPy, dizi işlemleri için sezgisel ve kullanımı kolay bir arayüz sunar. Çeşitli matematiksel fonksiyonlar ve operatörler, diziler üzerinde kolayca işlem yapmayı sağlar.
  4. Geniş Kapsamlı Fonksiyonlar: NumPy, lineer cebir, Fourier dönüşümleri, rastgele sayı üretimi ve daha birçok bilimsel hesaplama için geniş bir fonksiyon yelpazesi sunar.
  5. Entegrasyon: NumPy, SciPy, Pandas, Matplotlib gibi diğer bilimsel hesaplama kütüphaneleriyle sorunsuz bir şekilde entegre olur. Bu, daha karmaşık analizler ve görselleştirmeler yapmayı kolaylaştırır.

NumPy Dizileri (ndarray) Nasıl Oluşturulur?

NumPy dizileri oluşturmanın çeşitli yolları vardır. İşte en yaygın kullanılan yöntemler:

  1. Listelerden Dönüştürme: Python listelerini NumPy dizilerine dönüştürebilirsiniz.
  2. NumPy Fonksiyonlarını Kullanma: NumPy, dizi oluşturmak için özel fonksiyonlar sunar (array(), zeros(), ones(), arange(), linspace() vb.).

Örnek 1: Listeden Dizi Oluşturma


import numpy as np

my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array) # Output: [1 2 3 4 5]
print(type(my_array)) # Output: <class 'numpy.ndarray'>

Örnek 2: NumPy Fonksiyonlarını Kullanarak Dizi Oluşturma


import numpy as np

# Sıfırlarla dolu bir dizi oluşturma
zeros_array = np.zeros((2, 3)) # 2x3 boyutunda sıfır matrisi
print(zeros_array)
# Output:
# [[0. 0. 0.]
#  [0. 0. 0.]]

# Birlerle dolu bir dizi oluşturma
ones_array = np.ones((3, 2)) # 3x2 boyutunda birler matrisi
print(ones_array)
# Output:
# [[1. 1.]
#  [1. 1.]
#  [1. 1.]]

# Belirli bir aralıkta dizi oluşturma
arange_array = np.arange(0, 10, 2) # 0'dan 10'a kadar 2'şer artan sayılar
print(arange_array) # Output: [0 2 4 6 8]

# Belirli sayıda eşit aralıklı sayı oluşturma
linspace_array = np.linspace(0, 1, 5) # 0 ile 1 arasında 5 adet eşit aralıklı sayı
print(linspace_array) # Output: [0.   0.25 0.5  0.75 1.  ]

NumPy Dizilerinin Temel Özellikleri Nelerdir?

NumPy dizilerinin temel özellikleri şunlardır:

  • ndim: Dizinin boyut sayısı (rank).
  • shape: Dizinin her boyuttaki eleman sayısını gösteren bir tuple.
  • size: Dizideki toplam eleman sayısı.
  • dtype: Dizideki elemanların veri tipi.
  • itemsize: Her bir elemanın bayt cinsinden boyutu.
  • data: Dizinin verilerini içeren bellek bloğunun başlangıç adresi.

Örnek: Dizi Özelliklerini Görüntüleme


import numpy as np

my_array = np.array([[1, 2, 3], [4, 5, 6]])

print("Boyut sayısı (ndim):", my_array.ndim) # Output: Boyut sayısı (ndim): 2
print("Şekli (shape):", my_array.shape) # Output: Şekli (shape): (2, 3)
print("Eleman sayısı (size):", my_array.size) # Output: Eleman sayısı (size): 6
print("Veri tipi (dtype):", my_array.dtype) # Output: Veri tipi (dtype): int64 (veya sisteminize göre farklı olabilir)
print("Eleman boyutu (itemsize):", my_array.itemsize) # Output: Eleman boyutu (itemsize): 8 (int64 için)

NumPy Dizileri Üzerinde Hangi İşlemler Yapılabilir?

NumPy dizileri üzerinde çok çeşitli işlemler yapılabilir. İşte en yaygın kullanılan işlemler:

  • Aritmetik İşlemler: Toplama, çıkarma, çarpma, bölme vb.
  • Matematiksel Fonksiyonlar: Trigonometri, logaritma, üstel fonksiyonlar vb.
  • İstatistiksel İşlemler: Ortalama, medyan, standart sapma, varyans vb.
  • Lineer Cebir İşlemleri: Matris çarpımı, ters matris, determinant vb.
  • Yeniden Şekillendirme (Reshape): Dizinin boyutlarını değiştirme.
  • Birleştirme (Concatenate): Dizileri birleştirme.
  • Bölme (Split): Dizileri bölme.
  • Filtreleme (Filtering): Belirli koşulları sağlayan elemanları seçme.

Örnek 1: Aritmetik İşlemler


import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print("Toplama:", a + b) # Output: Toplama: [5 7 9]
print("Çıkarma:", a - b) # Output: Çıkarma: [-3 -3 -3]
print("Çarpma:", a * b) # Output: Çarpma: [ 4 10 18]
print("Bölme:", a / b) # Output: Bölme: [0.25 0.4  0.5 ]

Örnek 2: Matematiksel Fonksiyonlar


import numpy as np

a = np.array([0, np.pi/2, np.pi])

print("Sinüs:", np.sin(a)) # Output: Sinüs: [0.000e+00 1.000e+00 1.225e-16] (yaklaşık olarak [0, 1, 0])
print("Kosinüs:", np.cos(a)) # Output: Kosinüs: [ 1.000e+00 6.123e-17 -1.000e+00] (yaklaşık olarak [1, 0, -1])

Örnek 3: İstatistiksel İşlemler


import numpy as np

a = np.array([1, 2, 3, 4, 5])

print("Ortalama:", np.mean(a)) # Output: Ortalama: 3.0
print("Medyan:", np.median(a)) # Output: Medyan: 3.0
print("Standart Sapma:", np.std(a)) # Output: Standart Sapma: 1.4142135623730951

Örnek 4: Yeniden Şekillendirme (Reshape)


import numpy as np

a = np.arange(12) # 0'dan 12'ye kadar (12 hariç) sayılardan oluşan dizi
print("Orijinal Dizi:", a) # Output: Orijinal Dizi: [ 0  1  2  3  4  5  6  7  8  9 10 11]

b = a.reshape(3, 4) # 3x4 boyutunda yeniden şekillendirme
print("Yeniden Şekillendirilmiş Dizi:\n", b)
# Output:
# Yeniden Şekillendirilmiş Dizi:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

Örnek 5: Filtreleme (Filtering)


import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])

# 3'ten büyük olan elemanları seçme
filtered_array = a[a > 3]
print("Filtrelenmiş Dizi:", filtered_array) # Output: Filtrelenmiş Dizi: [4 5 6]

NumPy ve Python Listeleri Arasındaki Farklar Nelerdir?

NumPy dizileri ve Python listeleri arasındaki temel farklar şunlardır:

Özellik NumPy Dizisi (ndarray) Python Listesi
Veri Tipi Homojen (aynı tipteki veriler) Heterojen (farklı tipteki veriler)
Bellek Kullanımı Daha az bellek kullanır Daha fazla bellek kullanır
Performans Daha hızlı (vektörize edilmiş işlemler) Daha yavaş (döngüler gerektirebilir)
Matematiksel İşlemler Matematiksel işlemler için optimize edilmiştir Matematiksel işlemler için optimize edilmemiştir
Boyut Çok boyutlu olabilir Tek boyutludur (iç içe listelerle çok boyutlu taklit edilebilir)

Gerçek Hayattan NumPy Kullanım Örnekleri

NumPy, birçok farklı alanda yaygın olarak kullanılmaktadır. İşte bazı örnekler:

  • Görüntü İşleme: Görüntüler, sayısal matrisler olarak temsil edilebilir. NumPy, görüntü işleme algoritmaları geliştirmek için kullanılır (örneğin, filtreleme, kenar tespiti, segmentasyon).
  • Ses İşleme: Ses sinyalleri, sayısal diziler olarak temsil edilebilir. NumPy, ses işleme algoritmaları geliştirmek için kullanılır (örneğin, Fourier analizi, filtreleme, gürültü azaltma).
  • Finansal Analiz: Finansal veriler (hisse senedi fiyatları, döviz kurları vb.), sayısal diziler olarak temsil edilebilir. NumPy, finansal analiz algoritmaları geliştirmek için kullanılır (örneğin, risk analizi, portföy optimizasyonu).
  • Makine Öğrenimi: Makine öğrenimi algoritmaları, verileri sayısal matrisler üzerinde işler. NumPy, makine öğrenimi modellerini eğitmek ve değerlendirmek için kullanılır.
  • Simülasyon: Bilimsel ve mühendislik simülasyonları, genellikle sayısal hesaplamalar gerektirir. NumPy, bu tür simülasyonları geliştirmek için kullanılır (örneğin, akışkanlar dinamiği, yapısal analiz).

Vaka Çalışması: Görüntü İşleme

Bir görüntü işleme projesinde, bir görüntüyü bulanıklaştırmak için NumPy kullanılabilir. Görüntü, bir NumPy dizisi olarak temsil edilir ve bulanıklaştırma işlemi, bir konvolüsyon filtresi uygulanarak gerçekleştirilir. Bu işlem, her pikselin değerini, komşu piksellerin değerlerinin ağırlıklı ortalamasıyla değiştirir. NumPy'nin vektörize edilmiş işlemleri sayesinde, bu işlem çok hızlı bir şekilde gerçekleştirilebilir.


import numpy as np
from PIL import Image

# Görüntüyü yükleme
image = Image.open("ornek_resim.jpg").convert('L') # Gri tonlamalıya çevirme
image_array = np.array(image)

# Bulanıklaştırma filtresi tanımlama (örneğin, 3x3 ortalama filtresi)
blur_filter = np.array([[1/9, 1/9, 1/9],
                        [1/9, 1/9, 1/9],
                        [1/9, 1/9, 1/9]])

# Konvolüsyon işlemini gerçekleştirme (basit bir örnek)
def convolve(image, filter):
    height, width = image.shape
    filter_height, filter_width = filter.shape
    result = np.zeros_like(image)

    for i in range(height - filter_height + 1):
        for j in range(width - filter_width + 1):
            result[i, j] = np.sum(image[i:i+filter_height, j:j+filter_width] * filter)

    return result

blurred_image = convolve(image_array, blur_filter)

# Sonucu görüntüleme (PIL kullanarak)
blurred_image = Image.fromarray(blurred_image.astype(np.uint8)) #Doğru veri tipine dönüştürme
blurred_image.show()

Görsel Açıklama:

Yukarıdaki örnekte, `image_array` bir matrisi temsil eder. Bulanıklaştırma filtresi (`blur_filter`) ise bu matris üzerinde kaydırılarak (convolve edilerek) yeni bir matris oluşturulur. Bu yeni matris, bulanıklaştırılmış görüntüyü temsil eder. Her pikselin değeri, komşu piksellerin değerlerinden etkilenir, bu da görüntünün daha yumuşak görünmesini sağlar.

NumPy ile İlgili İpuçları ve Püf Noktaları

  • Vektörize Edilmiş İşlemleri Kullanın: Döngülerden kaçının ve NumPy'nin vektörize edilmiş işlemlerini kullanın. Bu, performansı önemli ölçüde artırır.
  • Doğru Veri Tipini Seçin: Veri tipini doğru seçmek, bellek kullanımını optimize eder ve performansı artırır. Örneğin, tam sayılarla çalışıyorsanız, `int64` yerine `int32` veya `int16` kullanmayı düşünebilirsiniz.
  • Belleği Verimli Kullanın: Büyük dizilerle çalışırken, bellek kullanımına dikkat edin. Gereksiz kopyalar oluşturmaktan kaçının ve "in-place" işlemleri kullanın (örneğin, `a += 1`).
  • Broadcasting'i Anlayın: Broadcasting, farklı boyutlardaki diziler üzerinde işlem yapmayı sağlayan güçlü bir mekanizmadır. Broadcasting'i anlamak, daha karmaşık işlemleri daha kolay bir şekilde gerçekleştirmenize yardımcı olur.
  • NumPy'nin Dökümantasyonunu Okuyun: NumPy'nin dökümantasyonu, kütüphanenin tüm özelliklerini ve fonksiyonlarını anlamak için en iyi kaynaktır.

Broadcasting Örneği:


import numpy as np

a = np.array([1, 2, 3])
b = 2

# b sayısı, a dizisiyle aynı boyuta "broadcast" edilir
print(a + b) # Output: [3 4 5]

NumPy Performansını Etkileyen Faktörler

NumPy performansını etkileyen birkaç faktör vardır:

  • Dizi Boyutu: Dizinin boyutu arttıkça, işlemler daha uzun sürer.
  • Veri Tipi: Farklı veri tipleri, farklı bellek gereksinimlerine ve işlem hızlarına sahiptir.
  • İşlem Türü: Bazı işlemler (örneğin, matris çarpımı) diğerlerinden (örneğin, toplama) daha karmaşıktır ve daha uzun sürer.
  • Bellek Erişimi: Verilerin bellekte nasıl düzenlendiği, performansı etkileyebilir. NumPy dizileri, verileri bitişik bellek bloklarında saklar, bu da performansı artırır.
  • Donanım: İşlemci hızı, bellek miktarı ve disk hızı gibi donanım özellikleri, performansı etkiler.
Faktör Açıklama Performansa Etkisi
Dizi Boyutu Dizideki eleman sayısı Büyük dizilerde işlemler daha uzun sürer
Veri Tipi Dizideki elemanların veri tipi (örneğin, int, float) Farklı veri tipleri farklı bellek gereksinimlerine ve işlem hızlarına sahiptir
İşlem Türü Yapılan matematiksel işlem (örneğin, toplama, çarpma, matris çarpımı) Karmaşık işlemler daha uzun sürer
Bellek Erişimi Verilerin bellekte nasıl düzenlendiği Bitişik bellek blokları performansı artırır
Donanım İşlemci, bellek, disk hızı Daha iyi donanım daha iyi performans sağlar

Sonuç

NumPy, Python ile bilimsel hesaplama yapmak için güçlü ve çok yönlü bir kütüphanedir. Yüksek performansı, kullanım kolaylığı ve geniş fonksiyon yelpazesi sayesinde, veri analizi, makine öğrenimi ve diğer bilimsel alanlarda vazgeçilmez bir araçtır. Bu makalede, NumPy'nin temel kavramlarını, özelliklerini ve kullanım örneklerini ele aldık. Umarız bu bilgiler, NumPy'yi daha iyi anlamanıza ve projelerinizde kullanmanıza yardımcı olur.

Aradığınız Bilgiyi Bulamıyor musunuz?

Bilgi bankasını detaylı olarak incelediniz, fakat ihtiyacınız olan bilgiyi bulamıyorsanız,

Bir Destek Talebi Oluşturun.
Faydalı Buldunuz mu?
(363 defa görüntülendi. / 122 kişi faydalı buldu.)

Ürün ve hizmetlerimiz hakkında daha detaylı bilgi almak için hemen arayın.

Top