Cheat Sheet NumPy
Terakhir diperbarui
Membuat array
Array menyimpan nilai dengan satu tipe dalam grid berdimensi berapa pun.
| Tugas | Kode |
|---|---|
| Mengimpor NumPy | import numpy as np |
| Dari sebuah list | np.array([1, 2, 3]) |
| 2D dari list bersarang | np.array([[1, 2, 3], [4, 5, 6]]) |
| Nol, satu, satu nilai pengisi | np.zeros((2, 3)), np.ones(4), np.full((2, 2), 7) |
| Range dengan langkah (ujung akhir tidak termasuk) | np.arange(0, 10, 2) # [0 2 4 6 8] |
| n titik berjarak sama (ujung akhir termasuk) | np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.] |
| Matriks identitas | np.eye(3) |
| Bentuk yang sama dengan array lain | np.zeros_like(m), np.ones_like(m) |
| Memilih tipe elemen | np.array([1, 2, 3], dtype=np.float32) |
| Grid koordinat | xx, yy = np.meshgrid(np.arange(3), np.arange(2)) |
Memeriksa array
| Tugas | Kode |
|---|---|
| Shape: ukuran setiap dimensi | m.shape # (3, 4) |
| Jumlah dimensi | m.ndim # 2 |
| Jumlah elemen | m.size # 12 |
| Tipe elemen | m.dtype # int64 |
| Mengonversi tipe | m.astype(np.float64) |
| Panjang dimensi pertama | len(m) # 3 |
| Kembali menjadi list Python | m.tolist() |
| Mencetak dengan lebih sedikit desimal | np.set_printoptions(precision=3, suppress=True) |
Indeks dan slice
Slice adalah view: berbagi memori dengan array aslinya. Mask dan list indeks mengembalikan salinan.
| Tugas | Kode |
|---|---|
| Elemen pertama dan terakhir | a[0], a[-1] |
| Slice start:stop (stop tidak termasuk) | a[1:4] # [20 30 40] |
| Setiap elemen kedua, dibalik | a[::2], a[::-1] |
| Satu elemen dari array 2D | m[1, 2] # 6 |
| Satu baris, satu kolom | m[0], m[:, 1] |
| Satu blok baris dan kolom | m[:2, 1:3] |
| Elemen yang memenuhi kondisi | a[a > 25] # [30 40 50] |
| Menggabungkan kondisi | a[(a > 15) & (a < 45)] |
| Memilih berdasarkan list posisi | a[[0, 2, 4]] |
| Posisi yang cocok | np.flatnonzero(a > 25) # [2 3 4] |
| Memilih per elemen | np.where(a > 25, a, 0) |
| Menyalin sebelum mengubah slice | part = a[1:3].copy() |
| Mengisi nilai dengan mask | a[a > 40] = 0 |
Matematika dan broadcasting
Operator bekerja per elemen. Broadcasting merentangkan skalar, baris, atau kolom agar sesuai dengan shape array lain.
| Tugas | Kode |
|---|---|
| Aritmetika per elemen | x + y, x - y, x * y, x / y, x ** 2 |
| Dengan skalar | x * 10 |
| Akar kuadrat, eksponen, log | np.sqrt(x), np.exp(x), np.log(x) |
| Nilai mutlak, pembulatan | np.abs(x - 5), np.round(x / 3, 2) |
| Membatasi nilai ke sebuah rentang | np.clip(x, 2, 8) |
| Maksimum per elemen | np.maximum(x, 3) |
| Dot product | x @ y # 37.0 |
| Menengahkan setiap kolom (broadcast sebuah baris) | m - m.mean(axis=0) |
| Menskalakan setiap baris (broadcast sebuah kolom) | m / m.sum(axis=1, keepdims=True) |
| Membandingkan float dengan aman | np.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y) |
| Trigonometri dan pi | np.sin(np.pi / 2) # 1.0 |
Agregasi sepanjang axis
axis=0 bekerja menurun sepanjang baris dan menghasilkan satu nilai per kolom. axis=1 bekerja melintasi kolom dan menghasilkan satu nilai per baris.
| Tugas | Kode |
|---|---|
| Total semua elemen | m.sum() # 21 |
| Satu hasil per kolom | m.sum(axis=0) # [5 7 9] |
| Satu hasil per baris | m.sum(axis=1) # [ 6 15] |
| Rata-rata dan simpangan baku | m.mean(), m.std(), m.mean(axis=0) |
| Minimum, maksimum | m.min(), m.max(axis=1) |
| Posisi nilai maksimum | m.argmax(), m.argmax(axis=1) |
| Median dan persentil | np.median(m), np.percentile(m, [25, 50, 75]) |
| Total berjalan | np.cumsum(m, axis=1) |
| Hasil kali semua elemen | m.prod() # 720 |
| Any, all, hitung | (m > 4).any(), (m > 0).all(), np.count_nonzero(m > 2) |
Reshape dan menggabungkan
Reshape mempertahankan elemen dan mengubah shape, jadi ukuran totalnya harus tetap sama.
| Tugas | Kode |
|---|---|
| Shape baru | a.reshape(2, 3) |
| Biarkan NumPy menghitung satu ukuran | a.reshape(3, -1), a.reshape(-1, 1) |
| Meratakan menjadi 1D | m.ravel(), m.flatten() |
| Transpose | m.T |
| Menambah dimensi | a[:, np.newaxis], np.expand_dims(a, axis=0) |
| Membuang dimensi berukuran 1 | np.squeeze(np.ones((1, 3, 1))) |
| Menggabungkan sepanjang axis yang sudah ada | np.concatenate([a, a]) |
| Menumpuk baris atau kolom | np.vstack([m, m]), np.hstack([m, m]) |
| Array 1D sebagai kolom | np.column_stack([a, a ** 2]) |
| Menumpuk sepanjang axis baru | np.stack([a, a], axis=0) # shape (2, 6) |
| Memecah menjadi beberapa bagian | np.split(a, 3), np.array_split(a, 4) |
| Mengulang atau menyusun ubin (tile) | np.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2] |
Sort, cari dan nilai unik
| Tugas | Kode |
|---|---|
| Salinan yang sudah diurutkan | np.sort(a) |
| Terbesar lebih dulu | np.sort(a)[::-1] |
| Posisi hasil pengurutan | np.argsort(a) |
| Tiga nilai terbesar | np.sort(a)[-3:] |
| Nilai unik beserta jumlahnya | values, counts = np.unique(a, return_counts=True) |
Nama di NumPy 2 (unique_values bisa tidak berurutan) | np.unique_values(a), np.unique_counts(a) |
| Apakah setiap elemen ada di dalam list? | np.isin(a, [1, 9]) |
| Posisi sisip di array yang terurut | np.searchsorted([1, 3, 5, 7], 4) # 2 |
| Operasi himpunan | np.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1]) |
| Mengurutkan baris berdasarkan satu kolom | m[m[:, 1].argsort()] |
Angka acak
Buat satu Generator dengan seed lalu ambil semua angka darinya, agar hasilnya sama di setiap run.
| Tugas | Kode |
|---|---|
| Generator dengan seed | rng = np.random.default_rng(42) |
| Float dalam [0, 1) | rng.random(3) |
| Bilangan bulat, batas atas tidak termasuk | rng.integers(1, 7, size=10) |
| Distribusi normal | rng.normal(loc=0, scale=1, size=(2, 3)) |
| Float seragam dalam sebuah rentang | rng.uniform(5, 10, size=4) |
| Memilih dari list | rng.choice(["a", "b", "c"], size=5) |
| Memilih tanpa pengulangan | rng.choice(10, size=3, replace=False) |
| Memilih dengan bobot | rng.choice(["H", "T"], size=10, p=[0.7, 0.3]) |
| Salinan yang diacak, mengacak di tempat | rng.permutation(a), rng.shuffle(a) |
| Hitungan binomial dan Poisson | rng.binomial(10, 0.5, size=5), rng.poisson(3, size=5) |
Aljabar linear
| Tugas | Kode |
|---|---|
| Perkalian matriks | A @ A |
| Menyelesaikan Ax = b | np.linalg.solve(A, b) # [0.8 1.4] |
| Invers dan determinan | np.linalg.inv(A), np.linalg.det(A) |
| Panjang vektor | np.linalg.norm(b) |
| Eigenvalue dan eigenvector | values, vectors = np.linalg.eig(A) |
| Mencocokkan garis lurus | slope, intercept = np.polyfit(x, y, 1) |
| Outer product | np.outer([1, 2], [3, 4]) |
| Diagonal dan trace | np.diag(A), np.trace(A) |
Nilai hilang dan nilai khusus
np.nan menandai float yang hilang. Aritmetika apa pun dengannya menghasilkan nan, jadi pakai fungsi nan atau mask.
| Tugas | Kode |
|---|---|
| Nilai hilang | np.nan |
| Menemukan nilai yang hilang | np.isnan(v), np.isnan(v).sum() |
| Membuang nilai yang hilang | v[~np.isnan(v)] |
| Mengganti nilai yang hilang dan tak hingga | np.nan_to_num(v, nan=0.0, posinf=0.0) |
| Pemeriksaan tak hingga dan nilai terhingga | np.inf, np.isfinite(v) |
| Statistik yang melewati NaN | np.nanmean(v[:3]) # 2.0, np.nanmax(v) |
Menyimpan dan memuat
| Tugas | Kode |
|---|---|
| Satu array, file biner | np.save("data.npy", m), m = np.load("data.npy") |
| Beberapa array dalam satu file | np.savez("data.npz", x=x, y=y), np.load("data.npz")["x"] |
| Menulis teks CSV | np.savetxt("data.csv", m, delimiter=",", fmt="%d") |
| Membaca teks CSV | np.loadtxt("data.csv", delimiter=",") |
NumPy 2: nama lama dan yang ditulis sekarang
NumPy 2 menghapus banyak alias, jadi kode yang disalin dari tutorial lama bisa gagal dengan AttributeError.
| Tugas | NumPy 2 | Bentuk lama |
|---|---|---|
| Nilai hilang | np.nan | np.NaN |
| Tak hingga | np.inf | np.Inf |
| Tipe float 64 bit | np.float64 | np.float_ |
| Luas di bawah kurva | np.trapezoid(y, x) | np.trapz(y, x) |
| Apakah setiap elemen ada di array lain? | np.isin(a, b) | np.in1d(a, b) |
| Menumpuk baris | np.vstack([a, a]) | np.row_stack([a, a]) |
| Hasil kali | np.prod(a) | np.product(a) |
| Angka acak | rng = np.random.default_rng(0)
rng.random(3) | np.random.seed(0)
np.random.rand(3) |
Pemanggilan NumPy yang menjadi dasar kode data science, dikelompokkan per tugas: membuat array, memeriksanya, indeks dan slice, matematika per elemen, agregasi sepanjang axis, reshape dan menggabungkan, mengurutkan dan mencari, mengambil angka acak, dan menyelesaikan aljabar linear. Setiap baris berisi potongan kode singkat yang bisa kamu tempel, plus satu kalimat tentang kegunaannya.
Semua yang ada di sini ditulis untuk NumPy 2, versi yang dijalankan Coddy, dan tabel terakhir mencantumkan nama-nama yang dihapus NumPy 2, di samping apa yang sebaiknya ditulis sekarang. Sebagian besar contoh memakai a = np.array([3, 1, 4, 1, 5, 9, 2, 6]) dan m = np.arange(12).reshape(3, 4). Baru mengenal Python? Mulailah dari cheat sheet Python dan playground Python, dan simpan juga cheat sheet pandas, Matplotlib, dan scikit-learn di samping halaman ini.
FAQ cheat sheet NumPy
Apakah cheat sheet NumPy ini gratis?
Ya. Cheat sheet NumPy ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark, atau cetak ke PDF dari browsermu, dan kembali kapan pun kamu butuh pemanggilan yang tepat untuk reshape, penjumlahan per axis, atau pengambilan angka acak.
Versi NumPy mana yang dibahas cheat sheet ini?
np.NaN, np.float_, np.trapz, dan np.in1d, jadi tabel terakhir menampilkan masing-masing di samping namanya yang sekarang.Apa arti axis=0 di NumPy?
axis=0 berjalan menurun sepanjang baris, jadi m.sum(axis=0) mengembalikan satu total per kolom. axis=1 berjalan melintasi kolom dan mengembalikan satu total per baris. Tanpa axis, fungsinya memakai semua elemen.Apa perbedaan view dan salinan (copy)?
a[1:3] adalah view: berbagi memori dengan a, jadi mengubah slice ikut mengubah a. Mask boolean dan list indeks seperti a[a > 2] atau a[[0, 2]] mengembalikan salinan. Panggil .copy() saat kamu butuh array yang berdiri sendiri.Kenapa memakai array NumPy alih-alih list Python?
a * 2 menggandakan setiap elemen, sedangkan [1, 2] * 2 mengulang list-nya. pandas dan scikit-learn dibangun di atas array NumPy.Sebaiknya saya pakai np.random.seed atau default_rng?
rng = np.random.default_rng(seed) lalu panggil method pada rng, seperti rng.normal() atau rng.integers(). Ini API yang direkomendasikan, dengan aliran angka acak yang lebih baik dan tanpa state global tersembunyi. np.random.seed dan np.random.rand masih berfungsi, tetapi merupakan antarmuka lama.