Pustaka Python & NumPy: dari Loop Manual ke Komputasi Ter-vektorisasi

Python untuk Sains


Di pertemuan sebelumnya kita menghitung banyak nilai memakai for loop. Cara itu berfungsi, tetapi untuk data besar ia lambat dan berbelit. Di sinilah library berperan — khususnya NumPy, pustaka inti komputasi numerik Python. Artikel ini menjembatani loop yang sudah kita kenal menuju cara NumPy yang jauh lebih ringkas, dengan contoh dari fisika, kimia, dan ilmu material.

Dari Loop ke Vectorization

Bayangkan mengubah daftar suhu Celsius ke Kelvin. Dengan loop, kita menyiapkan wadah kosong lalu mengulang:

suhu_c = [25, 100, 250]
suhu_k = []
for t in suhu_c:
    suhu_k.append(t + 273.15)
print(suhu_k)   # [298.15, 373.15, 523.15]

Dengan NumPy, operasi yang sama diterapkan ke seluruh array sekaligus — tanpa loop:

import numpy as np
suhu_c = np.array([25, 100, 250])
suhu_k = suhu_c + 273.15      # tanpa loop!
print(suhu_k)   # [298.15 373.15 523.15]

Inilah vectorization. NumPy menerapkan satu operasi ke semua elemen array dalam sekali jalan. Kodenya lebih pendek, lebih mudah dibaca, dan jauh lebih cepat untuk data besar — alasan utama sains modern memakai NumPy.

Kondisional Menjadi Boolean Masking

Bagaimana dengan if untuk menyaring data? NumPy punya padanan yang ringkas bernama boolean masking.

x = np.array([0.2, 0.4, 0.6, 0.8])
kecil = x[x < 0.5]     # ambil yang kurang dari 0.5
print(kecil)   # [0.2 0.4]

Ekspresi x < 0.5 menghasilkan array berisi True/False, dan x[mask] mengambil hanya elemen yang True. Satu baris ini menggantikan seluruh for + if.

Apa itu Library & Package?

Library (pustaka) adalah kumpulan kode siap pakai; package adalah kumpulan modul yang terorganisir. Alih-alih menulis semuanya dari nol, kita memanggil fungsi yang sudah teruji. Beberapa contoh lintas-disiplin:

  • Fisika: NumPy & SciPy untuk numerik dan persamaan diferensial; Matplotlib untuk grafik.
  • Kimia: NumPy untuk array data; pandas untuk tabel eksperimen.
  • Ilmu Material: NumPy untuk matriks sifat; scikit-learn untuk pembelajaran mesin.

Mengimpor Library

Ada beberapa cara mengimpor, ditunjukkan dengan fungsi cos NumPy:

import numpy            # 1
numpy.cos(0.5)

import numpy as np      # 2 (paling umum)
np.cos(0.5)

from numpy import cos   # 3
cos(0.5)

from numpy import *     # 4 (hati-hati)
cos(0.5)
# semua -> 0.8775825618903728

Cara ke-2 (alias np) adalah standar. Cara ke-4 (*) berisiko menimbulkan bentrok nama bila beberapa library dipakai bersama. Library juga bisa berisi modul; formatnya package.module.function() — misalnya np.random.normal().

NumPy & ndarray

Objek inti NumPy adalah ndarray. Kita bisa membayangkan array 1D sebagai vektor (mirip list), array 2D sebagai matriks, dan array 3D sebagai tensor. Fungsi np.array() mengubah list menjadi array.

a = np.array([1, 5, 2])   # 1D dari list
print(a)   # [1 5 2]

Semua elemen dalam satu array NumPy bertipe sama.

Membuat Array

FungsiKegunaan
np.array(a)Array dari sequence (list/tuple)
np.arange(start, stop, step)Deret berjarak tetap; nilai stop tidak ikut
np.linspace(start, stop, N)N titik merata; nilai stop ikut
np.zeros(shape)Array berisi nol
np.ones(shape)Array berisi satu
np.random.random(shape)Array acak 0 sampai 1
np.arange(0, 3.5, 0.5)   # [0.  0.5 1.  1.5 2.  2.5 3. ]
np.linspace(0, 8, 6)     # [0.  1.6 3.2 4.8 6.4 8. ]
np.zeros(5)              # [0. 0. 0. 0. 0.]

arange mirip range (memakai step, stop tidak ikut), sedangkan linspace menentukan jumlah titik dan menyertakan nilai stop. Perhatikan: array NumPy dicetak dengan spasi, bukan koma seperti list.

Atribut & Metode Array

A = np.array([[1,2,3],[4,5,6]])
A.dtype    # int64  (di Windows: int32)
A.ndim     # 2   (jumlah dimensi)
A.shape    # (2, 3)  (baris, kolom)
A.size     # 6   (total elemen)

Function vs method. Atribut seperti A.shape dipanggil dengan notasi titik — ini disebut metode/atribut, yang selalu menempel pada objek. Bandingkan dengan fungsi seperti type(A) atau len(A) yang berdiri sendiri.

Fungsi Ter-vektorisasi & Broadcasting

Fungsi matematika NumPy bekerja pada tiap elemen array sekaligus, dan operasi aritmetika diterapkan elemen-demi-elemen. Broadcasting memungkinkan penggabungan array berbeda ukuran bila logis (mis. skalar + array).

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a + b        # [5 7 9]
a * b        # [ 4 10 18]
1 + a**2     # [ 2 5 10]   (broadcasting)

M = np.array([[2,4,2],[2,1,1],[3,2,0]])
np.sum(M, axis=0)   # [7 7 3]  (per kolom)
np.sum(M, axis=1)   # [8 4 5]  (per baris)

axis=0 menjumlah menurun (per kolom), axis=1 menyamping (per baris). NumPy juga menyediakan konstanta np.pi dan np.e, serta fungsi agregasi mean, std, max, argmax, dan lainnya.

Indexing, Slicing & Stacking

v = np.array([[1,2,3],[4,5,6],[7,8,9]])
v[2]      # [7 8 9]  (baris ke-3)
v[1,2]    # 6   (baris 1, kolom 2)
v[-1,-1]  # 9   (elemen terakhir)
v[:,0]    # [1 4 7]  (kolom 0)
v[2,:]    # [7 8 9]  (baris 2)

Array 2D diakses dengan [baris, kolom]; tanda titik dua ( : ) berarti "seluruh" baris atau kolom. Untuk menggabung array, gunakan np.vstack (menumpuk vertikal) dan np.hstack (menumpuk horizontal).

Contoh Praktis: Gerak Partikel

Kekuatan NumPy paling terasa saat menghitung banyak nilai. Berikut posisi partikel pada tujuh data point, dihitung sekaligus tanpa loop:

t = np.linspace(0, 3, 7)     # 7 data points, 0..3 s
v0, a = 2.0, 1.0
y = v0*t + 0.5*a*t**2        # vectorized
print(y)
# [ 0.  1.125  2.5  4.125  6.  8.125  10.5 ]

Penutup

NumPy mengubah cara kita berpikir: alih-alih mengulang satu per satu dengan loop, kita mengoperasikan seluruh array sekaligus. Hasilnya kode yang ringkas, cepat, dan mudah dibaca — fondasi untuk simulasi dan analisis data ilmiah.

Belum membaca dasar loop dan fungsinya? Mulai dari Fungsi, For Loop, dan Kondisional di Python untuk Sains. Pertemuan berikutnya kita akan memvisualkan array NumPy dengan Matplotlib.

Catatan: seluruh contoh kode ditulis untuk Python 3 dan memerlukan NumPy seperti di Spyder(pip install numpy, sudah tersedia di Anaconda). Keluaran dtype dapat berbeda antar sistem operasi (int64 vs int32) — keduanya normal.

Ditulis untuk InspiraSains — belajar sains dan pemrograman secara gratis dan terbuka.

File Download: --File Download PDF--

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak