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.plotmenerima 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_numpydan methodnumpy()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:
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:
[[ 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:
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:
[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:
- Baris
data.mean(axis=0): argumenaxis=0memerintahkan agregasi sepanjang kolom, sehingga menghasilkan rata-rata per kolom,[161.25, 69.25]. - Baris
data.std(axis=0): simpangan baku per kolom dengan pola yang sama. - Baris
(data - rata) / simpangan: inilah broadcasting — matriks 4×2 dikurangi vektor 1×2; NumPy otomatis menyebarkanratadansimpanganke setiap baris. - Baris
np.round(..., 2): pembulatan dua desimal hanya untuk keperluan tampilan; nilaidata_bakutetap 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.