NumPy (Numerical Python) adalah pustaka Python untuk perhitungan numerik yang sangat cepat dan efisien. Artikel ini menjelaskan dasar-dasar penggunaan NumPy bagi pemula, mulai dari cara instalasi paket, pembuatan array 1D–3D, operasi aritmatika vektorisasi, hingga manipulasi data dengan indexing, slicing, dan broadcasting.
NumPy (Numerical Python) adalah pustaka Python untuk perhitungan numerik. NumPy menggantikan list Python biasa dengan struktur array multidimensi yang lebih efisien dan dilengkapi fungsi matematika tingkat lanjut.
NumPy sangat penting untuk bidang-bidang seperti:
Kalau kita coba kode berikut, kita akan memahami bahwa operasi dengan NumPy memiliki kinerja yang jauh lebih cepat ketimbang modul list bawaan dari Python.
import time
# Menggunakan list Python
data = list(range(1_000_000))
start = time.time()
hasil = [x * 2 for x in data]
print("Waktu list :", time.time() - start)
# Menggunakan NumPy
import numpy as np
data_np = np.arange(1_000_000)
start = time.time()
hasil_np = data_np * 2
print("Waktu NumPy:", time.time() - start)
Menggunakan perangkat yang sama, operasi dengan
listPython memakan waktu 0.027, sedangkan dengan NumPy hanya perlu waktu 0.0012.
Gunakan perintah berikut di terminal atau Anaconda/Miniconda prompt:
pip install numpy
Atau jika Anda menggunakan conda:
conda install numpy
Setelah terinstal, uji instalasinya dengan:
import numpy as np
print(np.__version__)
Kita bisa membuat array dengan contoh perintah berikut ini:
import numpy as np
# Array 1 dimensi
a = np.array([1, 2, 3])
# Array 2 dimensi
b = np.array([[1, 2, 3],
[4, 5, 6]])
# Array 3 dimensi
c = np.array([
[[1,2], [3,4]],
[[5,6], [7,8]]
])
print("a =", a)
print("b shape:", b.shape)
print("c ndim:", c.ndim)
Beberapa atribut penting dari NumPy:
| Atribut | Keterangan | Contoh |
|---|---|---|
.shape |
ukuran tiap dimensi | (2, 3) |
.ndim |
jumlah dimensi | 2 |
.dtype |
tipe data elemen | int32, float64 |
.size |
jumlah total elemen | 6 |
.itemsize |
ukuran tiap elemen (byte) | 8 |
Terdapat beberapa metode untuk membuat array khusus, misalnya yang semuanya berisi 0, 1, atau lainnya. Cek kode berikut ini:
np.zeros((2,3)) # array berisi 0
np.ones((2,3)) # array berisi 1
np.full((2,2), 9) # array berisi nilai tertentu
np.eye(3) # matriks identitas
np.arange(0,10,2) # seperti range()
np.linspace(0,1,5) # 5 angka dari 0 sampai 1
Jika array yang sudah pernah kita buat ingin kita ubah bentuknya, kita bisa menggunakan kode seperti:
a = np.arange(12)
b = a.reshape(3,4)
print(b)
Selain itu, kita juga bisa menggabungkan dan memisahkan array. Operasi ini diperlukan untuk berbagai keperluan pemrosesan data, yang merupakan salah satu backbone dari komputasi saintifik. Cek kode berikut ini:
x = np.array([1,2,3])
y = np.array([4,5,6])
print(np.concatenate([x,y])) # gabung
print(np.vstack([x,y])) # vertikal
print(np.hstack([x,y])) # horizontal
NumPy juga mendukung operasi elemen demi elemen (vectorized operations), misalnya:
a = np.array([10, 20, 30])
b = np.array([1, 2, 3])
print(a + b) # [11 22 33]
print(a - b) # [ 9 18 27]
print(a * b) # [10 40 90]
print(a / b) # [10. 10. 10.]
print(a ** 2) # [100 400 900]
⚡ Tidak perlu perulangan
forseperti pada list! Ini adalah alasan utama NumPy lebih cepat dibandinglistbawaan Python.
Kita juga bisa mengambil bagian-bagian tertentu dari suatu array yang sudah pernah kita buat melalui metode indexing, slicing dan broadcasting, cek kode berikut.
Untuk array 1D:
a = np.array([10,20,30,40,50])
print(a[1:4]) # [20 30 40]
print(a[-1]) # 50
Untuk array 2D:
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(b[0,2]) # elemen baris 0 kolom 2 → 3
print(b[:,1]) # kolom kedua → [2 5 8]
print(b[1,:]) # baris kedua → [4 5 6]
Broadcasting memungkinkan operasi antara array dengan bentuk berbeda. Misalnya:
A = np.array([[1,2,3],[4,5,6]])
B = np.array([10,20,30])
print(A + B)
NumPy melakukan broadcast array B agar cocok dengan bentuk A.
Beberapa fungsi-fungsi umum NumPy dapat dilihat pada tabel berikut ini.
| Kategori | Contoh Fungsi | Penjelasan |
|---|---|---|
| Statistik | np.mean, np.median, np.std, np.var |
rata-rata, deviasi standar, variansi |
| Agregasi | np.sum, np.min, np.max, np.argmin |
jumlah total, nilai min/max |
| Matematika | np.sqrt, np.exp, np.log, np.sin, np.cos |
fungsi matematika element-wise |
| Acak | np.random.rand, np.random.randint, np.random.normal |
pembangkitan data acak |
| Sortir | np.sort, np.argsort |
pengurutan dan indeks hasil urutan |
Contoh:
data = np.array([2, 5, 7, 1, 9])
print(np.mean(data)) # 4.8
print(np.sort(data)) # [1 2 5 7 9]
Operasi matriks dan aljabar linier merupakan satu dari sekiat metode inti dalam ilmu matematika dan pengemangan model pembelajaran mesin dan deep learning. Cek kode berikut ini untuk operasi-operasi array di NumPy, khususnya yang berkaitan dengan matriks dan aljabar linier.
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
print(A + B)
print(A @ B) # perkalian matriks (atau np.dot(A,B))
print(np.linalg.inv(A)) # invers
print(np.linalg.det(A)) # determinan
print(np.linalg.eig(A)) # eigenvalue & eigenvector
Kita bisa dengan mudah menghitung beberapa nilai-nilai statistika deskriptif, seperti berikut ini.
import numpy as np
nilai = np.array([75, 80, 60, 90, 85, 70])
print("Nilai rata-rata:", np.mean(nilai))
print("Nilai maksimum :", np.max(nilai))
print("Nilai minimum :", np.min(nilai))
print("Standar deviasi:", np.std(nilai))
Kita juga bisa melakukan pengukuran eksperimen tertentu, dan misalnya ingin menghitung nilai rata-rata dan simpangan baku.
# Misal kita punya data acak dari pengukuran suhu
data = np.random.normal(loc=27.5, scale=1.2, size=1000)
print("Rata-rata suhu:", np.mean(data))
print("Simpangan baku:", np.std(data))
Kode
np.random.normalmenghasilkan data secara acak dengan mengikuti kaidah distribusi normal.
Kita juga bisa menghitung jarak Euclidean antara dua vektor dalam ruang dua dimensi menggunakan NumPy di Python, seperti:
a = np.array([3,4])
b = np.array([0,0])
jarak = np.sqrt(np.sum((a - b)**2))
print("Jarak:", jarak)
Cek ringkasan dan cheatsheet berikut ini.
| Operasi | Sintaks | Keterangan |
|---|---|---|
| Membuat array | np.array([1,2,3]) |
array dasar |
| Rentang angka | np.arange(0,10,2) |
seperti range() |
| Array seragam | np.zeros((2,3)), np.ones((3,3)) |
berisi nol/satu |
| Rata-rata | np.mean(x) |
statistik dasar |
| Perkalian matriks | A @ B |
operasi linear algebra |
| Transpose | A.T |
membalik dimensi |
| Reshape | a.reshape(3,4) |
ubah dimensi |
| Acak | np.random.rand(3) |
bilangan acak 0–1 |
| Sorting | np.sort(x) |
urutkan elemen |
| Indexing 2D | a[1,2], a[:,1] |
baris/kolom |
📚 Referensi