Dizi oluşturma
Bir dizi, tek tipteki değerleri istediğin sayıda boyuta sahip bir ızgarada tutar.
| İşlem | Kod |
|---|
| NumPy'ı içe aktar | import numpy as np |
| Listeden | np.array([1, 2, 3]) |
| İç içe listelerden 2D | np.array([[1, 2, 3], [4, 5, 6]]) |
| Sıfırlar, birler, tek bir dolgu değeri | np.zeros((2, 3)), np.ones(4), np.full((2, 2), 7) |
| Adımlı aralık (son hariç) | np.arange(0, 10, 2) # [0 2 4 6 8] |
| Eşit aralıklı n nokta (son dahil) | np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.] |
| Birim matris | np.eye(3) |
| Başka bir diziyle aynı şekil | np.zeros_like(m), np.ones_like(m) |
| Eleman tipini seç | np.array([1, 2, 3], dtype=np.float32) |
| Koordinat ızgaraları | xx, yy = np.meshgrid(np.arange(3), np.arange(2)) |
Diziyi incele
| İşlem | Kod |
|---|
| Şekil: her boyutun büyüklüğü | m.shape # (3, 4) |
| Boyut sayısı | m.ndim # 2 |
| Eleman sayısı | m.size # 12 |
| Eleman tipi | m.dtype # int64 |
| Tipi dönüştür | m.astype(np.float64) |
| İlk boyutun uzunluğu | len(m) # 3 |
| Python listesine geri çevir | m.tolist() |
| Daha az ondalık yazdır | np.set_printoptions(precision=3, suppress=True) |
İndeksleme ve dilimleme
Dilimler view'dır: orijinal diziyle aynı belleği paylaşırlar. Maskeler ve indeks listeleri kopya döndürür.
| İşlem | Kod |
|---|
| İlk ve son eleman | a[0], a[-1] |
| start:stop dilimi (stop hariç) | a[1:4] # [20 30 40] |
| İki elemanda bir, ters sırada | a[::2], a[::-1] |
| 2D dizide tek eleman | m[1, 2] # 6 |
| Bir satır, bir sütun | m[0], m[:, 1] |
| Satır ve sütunlardan bir blok | m[:2, 1:3] |
| Koşula uyan elemanlar | a[a > 25] # [30 40 50] |
| Koşulları birleştir | a[(a > 15) & (a < 45)] |
| Konum listesiyle seç | a[[0, 2, 4]] |
| Eşleşen konumlar | np.flatnonzero(a > 25) # [2 3 4] |
| Eleman bazında seçim | np.where(a > 25, a, 0) |
| Dilimi değiştirmeden önce kopyala | part = a[1:3].copy() |
| Maskeyle değer ata | a[a > 40] = 0 |
Matematik ve broadcasting
Operatörler eleman eleman çalışır. Broadcasting bir skaleri, satırı ya da sütunu diğer dizinin şekline uyacak şekilde genişletir.
| İşlem | Kod |
|---|
| Eleman bazında aritmetik | x + y, x - y, x * y, x / y, x ** 2 |
| Skalerle | x * 10 |
| Karekök, üstel, logaritma | np.sqrt(x), np.exp(x), np.log(x) |
| Mutlak değer, yuvarlama | np.abs(x - 5), np.round(x / 3, 2) |
| Değerleri bir aralıkla sınırla | np.clip(x, 2, 8) |
| Eleman bazında maksimum | np.maximum(x, 3) |
| Nokta çarpımı | x @ y # 37.0 |
| Her sütunu ortala (satırı broadcast et) | m - m.mean(axis=0) |
| Her satırı ölçekle (sütunu broadcast et) | m / m.sum(axis=1, keepdims=True) |
| Float'ları güvenle karşılaştır | np.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y) |
| Trigonometri ve pi | np.sin(np.pi / 2) # 1.0 |
Axis boyunca toplama
axis=0 satırlar boyunca aşağı doğru çalışır ve her sütun için bir sonuç verir. axis=1 sütunlar boyunca yatay çalışır ve her satır için bir sonuç verir.
| İşlem | Kod |
|---|
| Tüm elemanların toplamı | m.sum() # 21 |
| Sütun başına bir sonuç | m.sum(axis=0) # [5 7 9] |
| Satır başına bir sonuç | m.sum(axis=1) # [ 6 15] |
| Ortalama ve standart sapma | m.mean(), m.std(), m.mean(axis=0) |
| Minimum, maksimum | m.min(), m.max(axis=1) |
| Maksimumun konumu | m.argmax(), m.argmax(axis=1) |
| Medyan ve yüzdelikler | np.median(m), np.percentile(m, [25, 50, 75]) |
| Kümülatif toplam | np.cumsum(m, axis=1) |
| Tüm elemanların çarpımı | m.prod() # 720 |
| Herhangi biri, hepsi, sayım | (m > 4).any(), (m > 0).all(), np.count_nonzero(m > 2) |
Yeniden şekillendirme ve birleştirme
Reshape elemanları korur ve şekli değiştirir, bu yüzden toplam boyut aynı kalmalıdır.
| İşlem | Kod |
|---|
| Yeni şekil | a.reshape(2, 3) |
| Bir boyutu NumPy hesaplasın | a.reshape(3, -1), a.reshape(-1, 1) |
| 1D'ye düzleştir | m.ravel(), m.flatten() |
| Transpoz | m.T |
| Boyut ekle | a[:, np.newaxis], np.expand_dims(a, axis=0) |
| 1 büyüklüğündeki boyutları at | np.squeeze(np.ones((1, 3, 1))) |
| Var olan bir axis boyunca birleştir | np.concatenate([a, a]) |
| Satırları ya da sütunları üst üste koy | np.vstack([m, m]), np.hstack([m, m]) |
| 1D dizileri sütun olarak | np.column_stack([a, a ** 2]) |
| Yeni bir axis boyunca yığ | np.stack([a, a], axis=0) # shape (2, 6) |
| Parçalara böl | np.split(a, 3), np.array_split(a, 4) |
| Tekrarla ya da döşe | np.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2] |
Sıralama, arama ve benzersiz değerler
| İşlem | Kod |
|---|
| Sıralı kopya | np.sort(a) |
| Büyükten küçüğe | np.sort(a)[::-1] |
| Sıralamayı veren konumlar | np.argsort(a) |
| En büyük üç değer | np.sort(a)[-3:] |
| Benzersiz değerler ve sayıları | values, counts = np.unique(a, return_counts=True) |
NumPy 2 adları (unique_values sırasız olabilir) | np.unique_values(a), np.unique_counts(a) |
| Her eleman listede mi? | np.isin(a, [1, 9]) |
| Sıralı dizide ekleme konumu | np.searchsorted([1, 3, 5, 7], 4) # 2 |
| Küme işlemleri | np.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1]) |
| Satırları bir sütuna göre sırala | m[m[:, 1].argsort()] |
Rastgele sayılar
Seed verilmiş tek bir Generator oluştur ve her şeyi ondan çek; böylece sonuçlar her çalıştırmada aynı çıkar.
| İşlem | Kod |
|---|
| Seed'li generator | rng = np.random.default_rng(42) |
| [0, 1) aralığında float | rng.random(3) |
| Tam sayılar, üst sınır hariç | rng.integers(1, 7, size=10) |
| Normal dağılım | rng.normal(loc=0, scale=1, size=(2, 3)) |
| Bir aralıkta düzgün dağılımlı float | rng.uniform(5, 10, size=4) |
| Listeden seç | rng.choice(["a", "b", "c"], size=5) |
| Tekrarsız seç | rng.choice(10, size=3, replace=False) |
| Ağırlıklı seç | rng.choice(["H", "T"], size=10, p=[0.7, 0.3]) |
| Karıştırılmış kopya, yerinde karıştırma | rng.permutation(a), rng.shuffle(a) |
| Binom ve Poisson sayımları | rng.binomial(10, 0.5, size=5), rng.poisson(3, size=5) |
Lineer cebir
| İşlem | Kod |
|---|
| Matris çarpımı | A @ A |
| Ax = b çöz | np.linalg.solve(A, b) # [0.8 1.4] |
| Ters matris ve determinant | np.linalg.inv(A), np.linalg.det(A) |
| Vektör uzunluğu | np.linalg.norm(b) |
| Özdeğerler ve özvektörler | values, vectors = np.linalg.eig(A) |
| Doğru uydur | slope, intercept = np.polyfit(x, y, 1) |
| Dış çarpım | np.outer([1, 2], [3, 4]) |
| Köşegen ve iz | np.diag(A), np.trace(A) |
Eksik ve özel değerler
np.nan eksik bir float'u işaretler. Onunla yapılan her aritmetik işlem nan verir, bu yüzden nan fonksiyonlarını ya da bir maske kullan.
| İşlem | Kod |
|---|
| Eksik değer | np.nan |
| Eksik değerleri bul | np.isnan(v), np.isnan(v).sum() |
| Eksik değerleri at | v[~np.isnan(v)] |
| Eksik ve sonsuz değerleri değiştir | np.nan_to_num(v, nan=0.0, posinf=0.0) |
| Sonsuz ve sonlu kontrolleri | np.inf, np.isfinite(v) |
| NaN'ları atlayan istatistikler | np.nanmean(v[:3]) # 2.0, np.nanmax(v) |
Kaydetme ve yükleme
| İşlem | Kod |
|---|
| Tek dizi, ikili dosya | np.save("data.npy", m), m = np.load("data.npy") |
| Tek dosyada birkaç dizi | np.savez("data.npz", x=x, y=y), np.load("data.npz")["x"] |
| CSV metni yaz | np.savetxt("data.csv", m, delimiter=",", fmt="%d") |
| CSV metni oku | np.loadtxt("data.csv", delimiter=",") |
NumPy 2: eski adlar ve yerine yazman gerekenler
NumPy 2 birçok takma adı kaldırdı, bu yüzden eski eğitimlerden kopyalanan kod AttributeError ile hata verebilir.
| İşlem | NumPy 2 | Eski kullanım |
|---|
| Eksik değer | np.nan | np.NaN |
| Sonsuz | np.inf | np.Inf |
| 64 bit float tipi | np.float64 | np.float_ |
| Eğri altındaki alan | np.trapezoid(y, x) | np.trapz(y, x) |
| Her eleman başka dizide mi? | np.isin(a, b) | np.in1d(a, b) |
| Satırları üst üste koy | np.vstack([a, a]) | np.row_stack([a, a]) |
| Çarpım | np.prod(a) | np.product(a) |
| Rastgele sayılar | rng = np.random.default_rng(0)
rng.random(3) | np.random.seed(0)
np.random.rand(3) |
Veri bilimi kodunun üzerine kurulduğu NumPy çağrıları, işe göre gruplanmış hâlde: dizi oluşturma, diziyi inceleme, indeksleme ve dilimleme, eleman bazında matematik, bir axis boyunca toplama, yeniden şekillendirme ve birleştirme, sıralama ve arama, rastgele sayı üretme ve lineer cebir. Her satırda yapıştırabileceğin kısa bir kod parçası ve ne yaptığını anlatan tek bir cümle var.
Buradaki her şey Coddy'nin kullandığı sürüm olan NumPy 2 için yazıldı; son tablo NumPy 2'nin kaldırdığı adları, yerine yazman gerekenlerle birlikte listeler. Örneklerin çoğu a = np.array([3, 1, 4, 1, 5, 9, 2, 6]) ve m = np.arange(12).reshape(3, 4) kullanır. Python'a yeni mi başlıyorsun? Önce Python hile sayfası ve Python playground ile başla, pandas, Matplotlib ve scikit-learn hile sayfalarını da bunun yanında açık tut.