- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Python Numpy Modülüne Girişndarraynumpy'nin temel veri yapısı, ndarray (N-dimensional array, N-boyutlu dizi) adı verilen homojen bir veri koleksiyonudur. Python'ın standart listelerinin aksine, numpy dizileri daha az bellek kullanır ve çok daha hızlı çalışır.
# Terminalde/Komut Satırında Kurulum
pip install numpy
En yaygın yöntem, standart Python listelerini np.array() fonksiyonuna dönüştürmektir.
import numpy as np
# 1. Tek Boyutlu Dizi (Vektör)
liste_1d = [1, 2, 3, 4, 5]
dizi_1d = np.array(liste_1d)
print("--- Tek Boyutlu Dizi ---")
print(dizi_1d)
print(f"Tipi: {type(dizi_1d)}")
# 2. İki Boyutlu Dizi (Matris)
liste_2d = [[1, 2, 3], [4, 5, 6]]
dizi_2d = np.array(liste_2d)
print("\n--- İki Boyutlu Dizi (Matris) ---")
print(dizi_2d)
numpy dizileri, boyut, şekil ve veri tipi gibi yapısal özellikleri öğrenmek için pratik metotlara sahiptir:
| Özellik | Amacı |
| .ndim | Dizinin boyut sayısı (1D, 2D, 3D...) |
| .shape | Dizinin şekli (satır ve sütun sayısı) |
| .size | Dizideki toplam eleman sayısı |
| .dtype | Dizinin elemanlarının veri tipi (int32, float64 vb.) |
numpy'nin asıl gücü, matematiksel işlemleri dizinin tüm elemanlarına aynı anda (döngü kurmadan) uygulamasıdır. Bu, standart Python listelerine göre kat kat daha hızlıdır.
# Standart Python Listeleri
liste_a = [1, 2, 3]
# liste_a * 2 -> Hata verir, ya da listeyi iki kere yazar
# ([1, 2, 3, 1, 2, 3])
# numpy Dizileri (Vektörel İşlem)
dizi_b = np.array([10, 20, 30])
dizi_c = np.array([1, 2, 3])
print("\n--- Vektörel İşlemler ---")
# Her elemanı 2 ile çarp
sonuc_carpma = dizi_b * 2
print(f"Çarpma: {sonuc_carpma}") # Çıktı: [20 40 60]
# Elemanları birbirine ekle (element-wise addition)
sonuc_toplama = dizi_b + dizi_c
print(f"Toplama: {sonuc_toplama}")# Çıktı: [11 22 33]
# Karşılaştırma (Boolean Dizi)
sonuc_kosul = dizi_b > 25
print(f"Koşul: {sonuc_kosul}")# Çıktı: [False False True]
numpy, belirli amaçlar için hızlıca dizi oluşturmanıza yarayan hazır fonksiyonlara sahiptir:
| Fonksiyon | Amacı |
| np.zeros(shape) | Belirtilen şekilde sıfırlardan oluşan dizi oluşturur. |
| np.ones(shape) | Belirtilen şekilde birlerden oluşan dizi oluşturur. |
| np.arange(start, stop, step) | Belirli aralıkta sayılardan oluşan dizi oluşturur (Python range gibi). |
| np.linspace(start, stop, num) | Başlangıç ve bitiş arasında eşit aralıklarla belirtilen sayıda eleman oluşturur. |
print("\n--- Özel Dizi Oluşturma ---")
print(f"Sıfır Dizisi (2x2): \n{np.zeros((2, 2))}")
# 0'dan 10'a kadar 5 eşit aralık
print(f"Linspace: {np.linspace(0, 10, 5)}")
# Çıktı: [ 0. 2.5 5. 7.5 10. ]numpy Dizilerine Erişim (Indexing),
Dilimleme (Slicing) ve Filtreleme
1. Dizilere Erişim (Indexing)
Python listelerinde olduğu gibi, numpy dizilerindeki elemanlara da indeks numaraları ile erişilir.
Çok boyutlu dizilerde ise her boyut için indeks belirtilir.
A. Tek Boyutlu Erişim
import numpy as np
dizi_1d = np.array([10, 20, 30, 40, 50])
print("--- Tek Boyutlu Erişim ---")
print(f"İlk Eleman: {dizi_1d[0]}") # Çıktı: 10
print(f"Son Eleman: {dizi_1d[-1]}") # Çıktı: 50
B. İki Boyutlu Erişim
İki boyutlu dizilerde erişim, [satır_indeksi, sütun_indeksi] formatında yapılır.
matris = np.array([
[1, 2, 3], # Satır 0
[4, 5, 6], # Satır 1
[7, 8, 9] # Satır 2
])
print("\n--- İki Boyutlu Erişim ---")
# [1, 2]: 1. satırın (yani [4, 5, 6]) 2. sütunu (yani 6)
print(f"1. Satır, 2. Sütun Elemanı: {matris[1, 2]}") # Çıktı: 6
# [0, 1]: 0. satırın 1. sütunu (yani 2)
print(f"0. Satır, 1. Sütun Elemanı: {matris[0, 1]}") # Çıktı: 2
2. Dilimleme (Slicing)
Verinin bir alt kümesini almak için start:stop:step formatı kullanılır (tıpkı Python listelerinde
olduğu gibi).
A. Dilimleme Kullanımı: [başlangıç:bitiş]
print("\n--- Dilimleme (Slicing) ---")
# 1. Tek Boyutlu Dilimleme: 1. indexten başla, 4. indexe kadar
# (4 dahil değil)
dilim_1d = dizi_1d[1:4]
print(f"1D Dilim: {dilim_1d}") # Çıktı: [20 30 40]
# 2. İki Boyutlu Dilimleme: [Tüm satırlar, 1. sütundan sona kadar]
dilim_2d_sutun = matris[:, 1:]
print(f"2D Dilim (Sütunlar): \n{dilim_2d_sutun}")
# Çıktı:
# [[2 3]
# [5 6]
# [8 9]]
3. Koşullu Filtreleme (Boolean Indexing)
Bu, numpy ve pandas'ı bu kadar güçlü yapan özelliktir. Belirli bir koşula uyan elemanları
seçmek için kullanılır.
Adım 1: Koşulu belirten bir Boolean (True/False) dizisi oluşturulur.
Adım 2: Bu Boolean dizi, orijinal diziye filtre olarak uygulanır.
yaslar = np.array([15, 22, 30, 18, 45, 12])
# 1. Koşul Dizisi Oluşturma (Boolean Array)
filtre_kosulu = yaslar >= 20
print(f"\nKoşul Dizisi: {filtre_kosulu}")
# Çıktı: [False True True False True False]
# 2. Filtreyi Uygulama
yirmi_ustu = yaslar[filtre_kosulu]
print(f"20 Yaş Üstü: {yirmi_ustu}") # Çıktı: [22 30 45]
# 3. Koşulu tek satırda uygulama (Daha yaygın kullanım)
tek_haneli_yaslar = yaslar[yaslar < 18]
print(f"18 Yaş Altı: {tek_haneli_yaslar}") # Çıktı: [15 12]
numpy: Matematiksel Fonksiyonlar
ve İstatistik
numpy, diziler üzerinde döngü yazmaya gerek kalmadan tüm temel ve ileri düzey
matematiksel işlemleri gerçekleştiren hızlı fonksiyonlar sunar.
1. Temel İstatistiksel Fonksiyonlar
Bu fonksiyonlar, genellikle veri setindeki tüm elemanlar üzerinde çalışır (veya belirli bir
eksen/eksenler üzerinde).
Fonksiyon Amacı Açıklama np.mean()Ortalama Dizideki elemanların aritmetik ortalaması. np.median()Medyan Dizideki elemanların ortanca değeri. np.std()Standart Sapma Verilerin ortalamadan ne kadar saptığını ölçer. np.sum()Toplam Dizideki tüm elemanların toplamı. np.min() / np.max()Minimum / Maksimum Dizideki en küçük ve en büyük değeri bulur.
import numpy as np
maaslar = np.array([50000, 65000, 48000, 72000, 65000, 80000])
print("--- Temel İstatistikler ---")
print(f"Ortalama Maaş: {np.mean(maaslar):,.2f}") # Çıktı: 63,333.33
print(f"Maksimum Maaş: {np.max(maaslar):,}") # Çıktı: 80,000
print(f"Toplam Maaşlar: {np.sum(maaslar):,}") # Çıktı: 380,000
print(f"Standart Sapma: {np.std(maaslar):,.2f}") # Çıktı: 10,750.37
2. Eksen Bazında (Axis) İşlemler
İki boyutlu bir matriste (axis=0 veya axis=1) belirli bir eksen boyunca (satır veya sütun)
hesaplama yapmak için axis parametresi kullanılır.
axis=0: Sütunlar boyunca işlem yap (Her sütunun toplamı/ortalaması).
axis=1: Satırlar boyunca işlem yap (Her satırın toplamı/ortalaması).
matris = np.array([
[10, 20, 30], # Satır 0
[40, 50, 60] # Satır 1
])
print("\n--- Eksen Bazında Toplam (np.sum) ---")
# axis=0 (Sütunlar) boyunca toplam: [10+40, 20+50, 30+60]
sutun_toplamlari = np.sum(matris, axis=0)
print(f"Sütun Toplamları: {sutun_toplamlari}") # Çıktı: [50 70 90]
# axis=1 (Satırlar) boyunca toplam: [10+20+30, 40+50+60]
satir_toplamlari = np.sum(matris, axis=1)
print(f"Satır Toplamları: {satir_toplamlari}") # Çıktı: [ 60 150]
3. Genel Matematik Fonksiyonları
(Universal Functions - ufuncs)
numpy, eleman bazında hızlı matematiksel işlemler (trigonometri, üs alma, logaritma) için
universal functions (ufuncs) sağlar.
dizi = np.array([1, 2, 3, 4])
print("\n--- Genel Matematik İşlemleri (ufuncs) ---")
# Karekök hesaplama
karekokler = np.sqrt(dizi)
print(f"Karekökler: {karekokler}")
# Çıktı:[1. 1.41421356 1.73205081 2. ]
# Üstel fonksiyon (e^x)
ustel_degerler = np.exp(dizi)
print(f"Üstel Değerler: {ustel_degerler}")
# Logaritma (doğal logaritma)
logaritmalar = np.log(dizi)
print(f"Logaritmalar: {logaritmalar}")
Yorumlar
Yorum Gönder