Dalam praktik sehari-hari, kita jarang berhenti di NumPy: array biasanya menjadi bahan mentah yang diproses, divisualisasikan, atau dimodelkan oleh pustaka lain. Karena itulah NumPy sering disebut bahasa bersama ekosistem sains data Python — hampir semua pustaka utama menerima ndarray sebagai masukan, mengembalikannya sebagai keluaran, atau membangun strukturnya di atasnya.

Alasan teknisnya sederhana: antarmuka ndarray stabil dan efisien (buffer memori kontinu plus satu atribut dtype), sehingga pustaka mana pun dapat membaca data NumPy tanpa konversi yang mahal.

Pustaka yang Berbicara dengan NumPy #

  • pandas — DataFrame pada dasarnya kumpulan kolom yang dibangun di atas array; banyak operasi numeriknya diturunkan dari NumPy.
  • Matplotlib — fungsi seperti plt.plot menerima data array; grafik digambar dari nilai-nilai ndarray.
  • SciPy — kumpulan algoritme ilmiah (optimasi, interpolasi, statistik, pengolahan sinyal) yang seluruhnya beroperasi pada ndarray.
  • scikit-learn — estimator machine learning menuntut masukan array 2D berbentuk (n_sampel, n_fitur).
  • PyTorch dan TensorFlow — framework deep learning menyediakan jalan konversi dua arah dari dan ke ndarray, misalnya torch.from_numpy dan method numpy() pada tensor.

Peta Alur Data #

Diagram berikut merangkum posisi NumPy di tengah alur kerja sains data:

Baca diagram itu sebagai arah ketergantungan, bukan urutan eksekusi yang kaku. pandas, Matplotlib, SciPy, dan scikit-learn memanggil NumPy di balik layar: kolom DataFrame pandas tersimpan sebagai array, grafik Matplotlib digambar dari nilai array, dan estimator scikit-learn mengonsumsi array pada method fit dan predict. Untuk deep learning, arahnya berbalik — data NumPy dikonversi menjadi tensor agar dapat diproses, termasuk di GPU, oleh PyTorch atau TensorFlow.

Menyiapkan Data ala Pustaka Lain #

Banyak pustaka menuntut data berbentuk matriks 2D. Mengubah satu baris sinyal menjadi matriks cukup dengan reshape:

python
import numpy as np

sinyal = np.array([2.0, 4.0, 6.0, 8.0, 10.0, 12.0])
matriks = sinyal.reshape(2, 3)
print(matriks)
print(matriks.shape)

Output yang Dihasilkan:

text
[[ 2.  4.  6.]
 [ 8. 10. 12.]]
(2, 3)

Method reshape(2, 3) menata ulang enam elemen menjadi dua baris tiga kolom tanpa menyalin data — yang berubah hanyalah cara pandang terhadap buffer yang sama. Atribut shape kemudian menyatakan bentuknya sebagai (2, 3). Bentuk (n_sampel, n_fitur) seperti ini persis yang diminta estimator scikit-learn: dua sampel dengan tiga fitur.

Persiapan lain yang lazim sebelum data masuk ke model adalah standardisasi: menggeser setiap kolom agar rata-ratanya nol dan simpangan bakunya satu. Seluruh proses ini dapat ditulis dengan NumPy murni:

python
import numpy as np

data = np.array([
    [150.0, 60.0],
    [165.0, 72.0],
    [172.0, 80.0],
    [158.0, 65.0],
])

rata = data.mean(axis=0)
simpangan = data.std(axis=0)
data_baku = (data - rata) / simpangan
print(rata)
print(np.round(simpangan, 4))
print(np.round(data_baku, 2))

Output yang Dihasilkan:

text
[161.25  69.25]
[8.1662 7.5291]
[[-1.38 -1.23]
 [ 0.46  0.37]
 [ 1.32  1.43]
 [-0.4  -0.56]]

Mari kita bedah:

  1. Baris data.mean(axis=0): argumen axis=0 memerintahkan agregasi sepanjang kolom, sehingga menghasilkan rata-rata per kolom, [161.25, 69.25].
  2. Baris data.std(axis=0): simpangan baku per kolom dengan pola yang sama.
  3. Baris (data - rata) / simpangan: inilah broadcasting — matriks 4×2 dikurangi vektor 1×2; NumPy otomatis menyebarkan rata dan simpangan ke setiap baris.
  4. Baris np.round(..., 2): pembulatan dua desimal hanya untuk keperluan tampilan; nilai data_baku tetap presisi penuh.

Hasilnya adalah data baku (standardized) yang siap dilempar ke estimator atau framework mana pun yang menerima ndarray.

Jembatan resmi ke pandas, Matplotlib, dan scikit-learn kita coba langsung pada section Interoperabilitas Ekosistem Python; di sana konversi dua arah diuji dengan pustaka aslinya.