Python terkenal dengan sintaks yang sederhana, tetapi kenyamanan itu ada harga teknisnya: setiap operasi dieksekusi oleh interpreter, objek demi objek. Ketika kita memproses seribu angka dengan loop for, interpreter membuka, memeriksa, lalu menghitung seribu objek Python satu per satu. Pada data ribuan sampai jutaan angka — harga saham, piksel gambar, bobot model machine learning — cara kerja tersebut menjadi lambat dan boros memori.
NumPy (Numerical Python) adalah pustaka komputasi numerik open source yang menjadi jawaban standar atas masalah itu. Proyek ini berakar dari pustaka Numeric dan Numarray yang digabungkan menjadi NumPy pada tahun 2006, dan kini dikelola komunitas NumPy melalui situs numpy.org. Hampir seluruh pustaka sains data Python — pandas, SciPy, scikit-learn, Matplotlib — membangun fiturnya di atas NumPy.
Sebelum masuk ke section-section berikutnya, bab ini memetakan tiga hal:
- array sebagai struktur data inti NumPy beserta sifat homogennya;
- cakupan kegunaan NumPy dalam daftar ringkas;
- konvensi
import numpy as npyang dipakai seluruh komunitas.
Array: Struktur Data Inti NumPy #
Struktur data sentral NumPy adalah ndarray (n-dimensional array), wadah berdimensi bebas yang isinya angka-angka bertipe sama. Tiga sifat teknis membuat ndarray efisien:
- Homogen: seluruh elemen memakai satu tipe data (
dtype) yang sama, misalnya semuaint64atau semuafloat64. - Buffer kontinu: nilai-nilai disimpan berdempetan dalam satu blok memori, tanpa pointer antar objek.
- Implementasi C: operasi pada array dijalankan oleh kode C yang terkompilasi, sementara kita tetap menulis API Python yang akrab.
Mari kita lihat contoh pertama — membuat array dari list harga, lalu mengolahnya dengan aritmatika biasa:
import numpy as np
harga = np.array([15000, 24000, 8000])
jumlah = harga + 1000 # setiap elemen bertambah 1000
diskon = harga * 0.5 # setiap elemen dikali 0.5
print(jumlah)
print(diskon)Output yang Dihasilkan:
[16000 25000 9000]
[ 7500. 12000. 4000.]Mari kita bedah baris demi baris:
- Baris 3 (
np.array([...])): NumPy membaca list Python, mengalokasikan satu blok memori kontinu, kemudian menyalin ketiga angka ke dalamnya sebagai arrayint64baru. - Baris 4 (
harga + 1000): NumPy menjalankan operasi element-wise — angka1000dijumlahkan ke setiap elemen sekaligus di level C, tanpa loop Python yang kita tulis sendiri. - Baris 5 (
harga * 0.5): perkalian per elemen dengan bilangan pecahan menghasilkan arrayfloat64baru; inilah sebabnya tanda desimal muncul pada baris kedua output. - Baris 6-7 (
print(...)): objek ndarray menampilkan dirinya dalam bentuk bracket, sehingga isinya bisa diperiksa langsung di terminal.
Sifat homogen punya konsekuensi yang sering ditemui pemula: ketika tipe berbeda dimasukkan ke satu array, seluruh elemen menyesuaikan diri ke tipe yang paling umum.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1.5, 2, 3])
print(a.dtype)
print(b.dtype)Output yang Dihasilkan:
int64
float64Array a berisi bilangan bulat sehingga tipenya int64. Array b memuat satu nilai pecahan 1.5, sehingga NumPy mempromosikan seluruh elemen — termasuk 2 dan 3 — menjadi float64. Satu array hanya boleh memiliki satu dtype.
Yang Bisa Dilakukan NumPy #
Cakupan API NumPy luas, tetapi kelompok kegunaannya dapat dipetakan dengan ringkas:
- Membuat array dari list, rentang angka, atau buffer berisi nol (
np.array,np.arange,np.zeros). - Operasi matematika per elemen: akar, eksponensial, trigonometri (
np.sqrt,np.exp,np.sin). - Agregasi dan statistik: merangkum array menjadi satu angka (
sum,mean,std,min,max). - Aljabar linear: perkalian dot, operasi matriks, sistem persamaan (
np.dot,np.linalg.solve). - Bilangan acak yang dapat direproduksi melalui generator ber-seed (
np.random.default_rng). - I/O data: menyimpan dan membaca array dari file biner maupun teks (
np.save,np.loadtxt).
Setiap kelompok di atas akan kita coba satu per satu pada bab Fungsi dan Kegunaan NumPy.
Konvensi import numpy as np #
Di seluruh dunia Python, NumPy hampir selalu diimpor dengan satu baris yang sama: import numpy as np. Anggap baris ini bagian dari tata bahasa komunitas — dokumentasi resmi, buku, forum, dan kode rekan kerja memakai np.array(...), bukan numpy.array(...). Dengan mengikuti konvensi yang sama, kode kita langsung terbaca oleh orang lain.
Posisi NumPy juga perlu dipahami sejak awal: pustaka ini duduk di lapisan tengah — di atas implementasi C, di bawah pustaka aplikasi seperti pandas dan scikit-learn. Pemetaan posisi itu kita bahas tuntas pada bab Ekosistem NumPy.