Menu
CoddyTech

NumPy Cheat Sheet (Hile Sayfası)

Son güncelleme

Dizi oluşturma

Bir dizi, tek tipteki değerleri istediğin sayıda boyuta sahip bir ızgarada tutar.

İşlemKod
NumPy'ı içe aktarimport numpy as np
Listedennp.array([1, 2, 3])
İç içe listelerden 2Dnp.array([[1, 2, 3], [4, 5, 6]])
Sıfırlar, birler, tek bir dolgu değerinp.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 matrisnp.eye(3)
Başka bir diziyle aynı şekilnp.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

İşlemKod
Şekil: her boyutun büyüklüğüm.shape # (3, 4)
Boyut sayısım.ndim # 2
Eleman sayısım.size # 12
Eleman tipim.dtype # int64
Tipi dönüştürm.astype(np.float64)
İlk boyutun uzunluğulen(m) # 3
Python listesine geri çevirm.tolist()
Daha az ondalık yazdırnp.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.

İşlemKod
İlk ve son elemana[0], a[-1]
start:stop dilimi (stop hariç)a[1:4] # [20 30 40]
İki elemanda bir, ters sıradaa[::2], a[::-1]
2D dizide tek elemanm[1, 2] # 6
Bir satır, bir sütunm[0], m[:, 1]
Satır ve sütunlardan bir blokm[:2, 1:3]
Koşula uyan elemanlara[a > 25] # [30 40 50]
Koşulları birleştira[(a > 15) & (a < 45)]
Konum listesiyle seça[[0, 2, 4]]
Eşleşen konumlarnp.flatnonzero(a > 25) # [2 3 4]
Eleman bazında seçimnp.where(a > 25, a, 0)
Dilimi değiştirmeden önce kopyalapart = a[1:3].copy()
Maskeyle değer ataa[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.

İşlemKod
Eleman bazında aritmetikx + y, x - y, x * y, x / y, x ** 2
Skalerlex * 10
Karekök, üstel, logaritmanp.sqrt(x), np.exp(x), np.log(x)
Mutlak değer, yuvarlamanp.abs(x - 5), np.round(x / 3, 2)
Değerleri bir aralıkla sınırlanp.clip(x, 2, 8)
Eleman bazında maksimumnp.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ırnp.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y)
Trigonometri ve pinp.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.

İşlemKod
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 sapmam.mean(), m.std(), m.mean(axis=0)
Minimum, maksimumm.min(), m.max(axis=1)
Maksimumun konumum.argmax(), m.argmax(axis=1)
Medyan ve yüzdeliklernp.median(m), np.percentile(m, [25, 50, 75])
Kümülatif toplamnp.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.

İşlemKod
Yeni şekila.reshape(2, 3)
Bir boyutu NumPy hesaplasına.reshape(3, -1), a.reshape(-1, 1)
1D'ye düzleştirm.ravel(), m.flatten()
Transpozm.T
Boyut eklea[:, np.newaxis], np.expand_dims(a, axis=0)
1 büyüklüğündeki boyutları atnp.squeeze(np.ones((1, 3, 1)))
Var olan bir axis boyunca birleştirnp.concatenate([a, a])
Satırları ya da sütunları üst üste koynp.vstack([m, m]), np.hstack([m, m])
1D dizileri sütun olaraknp.column_stack([a, a ** 2])
Yeni bir axis boyunca yığnp.stack([a, a], axis=0) # shape (2, 6)
Parçalara bölnp.split(a, 3), np.array_split(a, 4)
Tekrarla ya da döşenp.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2]

Sıralama, arama ve benzersiz değerler

İşlemKod
Sıralı kopyanp.sort(a)
Büyükten küçüğenp.sort(a)[::-1]
Sıralamayı veren konumlarnp.argsort(a)
En büyük üç değernp.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 konumunp.searchsorted([1, 3, 5, 7], 4) # 2
Küme işlemlerinp.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1])
Satırları bir sütuna göre sıralam[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.

İşlemKod
Seed'li generatorrng = np.random.default_rng(42)
[0, 1) aralığında floatrng.random(3)
Tam sayılar, üst sınır hariçrng.integers(1, 7, size=10)
Normal dağılımrng.normal(loc=0, scale=1, size=(2, 3))
Bir aralıkta düzgün dağılımlı floatrng.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ırmarng.permutation(a), rng.shuffle(a)
Binom ve Poisson sayımlarırng.binomial(10, 0.5, size=5), rng.poisson(3, size=5)

Lineer cebir

İşlemKod
Matris çarpımıA @ A
Ax = b çöznp.linalg.solve(A, b) # [0.8 1.4]
Ters matris ve determinantnp.linalg.inv(A), np.linalg.det(A)
Vektör uzunluğunp.linalg.norm(b)
Özdeğerler ve özvektörlervalues, vectors = np.linalg.eig(A)
Doğru uydurslope, intercept = np.polyfit(x, y, 1)
Dış çarpımnp.outer([1, 2], [3, 4])
Köşegen ve iznp.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.

İşlemKod
Eksik değernp.nan
Eksik değerleri bulnp.isnan(v), np.isnan(v).sum()
Eksik değerleri atv[~np.isnan(v)]
Eksik ve sonsuz değerleri değiştirnp.nan_to_num(v, nan=0.0, posinf=0.0)
Sonsuz ve sonlu kontrollerinp.inf, np.isfinite(v)
NaN'ları atlayan istatistiklernp.nanmean(v[:3]) # 2.0, np.nanmax(v)

Kaydetme ve yükleme

İşlemKod
Tek dizi, ikili dosyanp.save("data.npy", m), m = np.load("data.npy")
Tek dosyada birkaç dizinp.savez("data.npz", x=x, y=y), np.load("data.npz")["x"]
CSV metni yaznp.savetxt("data.csv", m, delimiter=",", fmt="%d")
CSV metni okunp.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.

İşlemNumPy 2Eski kullanım
Eksik değernp.nannp.NaN
Sonsuznp.infnp.Inf
64 bit float tipinp.float64np.float_
Eğri altındaki alannp.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 koynp.vstack([a, a])np.row_stack([a, a])
Çarpımnp.prod(a)np.product(a)
Rastgele sayılarrng = 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.

NumPy hile sayfası hakkında sık sorulan sorular

Bu NumPy hile sayfası ücretsiz mi?
Evet. Bu NumPy hile sayfası tamamen ücretsiz ve kayıt gerektirmez. Yer imlerine ekle ya da tarayıcından PDF olarak yazdır; bir reshape, axis toplamı ya da rastgele çekim için tam çağrıya ihtiyacın olduğunda geri gel.
Bu hile sayfası hangi NumPy sürümünü kapsıyor?
NumPy 2. Her kod parçası, Coddy'nin kullandığı sürüm olan NumPy 2.4'te çalışır. NumPy 2, np.NaN, np.float_, np.trapz ve np.in1d gibi takma adları kaldırdı; son tablo her birini güncel adının yanında gösterir.
NumPy'da axis=0 ne demek?
Axis, daraltılan boyuttur. 2D bir dizide axis=0 satırlar boyunca aşağı iner, bu yüzden m.sum(axis=0) her sütun için bir toplam döndürür. axis=1 sütunlar boyunca ilerler ve her satır için bir toplam döndürür. Axis verilmezse fonksiyon tüm elemanları kullanır.
View ile kopya arasındaki fark nedir?
a[1:3] gibi bir dilim bir view'dır: a ile aynı belleği paylaşır, bu yüzden dilimi değiştirmek a dizisini de değiştirir. a[a > 2] ya da a[[0, 2]] gibi boolean maskeler ve indeks listeleri kopya döndürür. Bağımsız bir diziye ihtiyacın olduğunda .copy() çağır.
Neden Python listesi yerine NumPy dizisi kullanmalıyım?
Diziler tek bir tipi tek bir bellek bloğunda tutar, bu yüzden tüm dizi üzerindeki matematik derlenmiş kodda çalışır ve çoğu zaman bir Python döngüsünden kat kat hızlıdır. a * 2 her elemanı ikiye katlarken [1, 2] * 2 listeyi tekrarlar. pandas ve scikit-learn, NumPy dizileri üzerine kuruludur.
np.random.seed mi kullanmalıyım, default_rng mi?
rng = np.random.default_rng(seed) kullan ve rng.normal() ya da rng.integers() gibi metotları rng üzerinden çağır. Önerilen API budur: daha iyi rastgele sayı akışları sunar ve gizli global durum yoktur. np.random.seed ve np.random.rand hâlâ çalışır ama eski (legacy) arayüzdür.
NumPy kodunu online çalıştırabilir miyim?
Evet. Ücretsiz Matplotlib playground, Python'u NumPy, pandas, Matplotlib ve scikit-learn ile birlikte tarayıcında çalıştırır; bu hile sayfasındaki herhangi bir kod parçasını yapıştırıp hiçbir şey kurmadan çalıştırabilirsin. Coddy'nin Machine Learning kursu, gerçek verilerle çalışmanın bir parçası olarak NumPy'ı adım adım öğretir.
Coddy programlama dilleri çizimi

Coddy ile NumPy öğren

BAŞLA