NumPy Array vs List Python: Kenapa Lebih Cepat
TL;DR
NumPy array lebih cepat dari list Python buat data numerik karena tiga hal: array nyimpen elemen satu tipe dalam blok memori yang rapat, operasinya jalan di kode C tanpa loop Python, dan mendukung vectorization. List Python fleksibel dan bisa campur tipe, tapi tiap elemen itu objek terpisah yang bikin operasi angka jadi lambat. Buat ribuan angka ke atas, array biasanya puluhan kali lebih ngebut.
NumPy array lebih cepat dari list Python buat operasi numerik karena nyimpen angka dalam blok memori yang rapat dengan satu tipe data, lalu ngerjain operasinya di kode C tanpa loop Python. List Python fleksibel, tapi lambat buat hitung-hitungan angka dalam jumlah besar.
Kalau kamu baru mulai analisis data di Python, pertanyaan ini muncul cepat: kenapa semua orang pakai NumPy, padahal list udah ada?
Jawaban singkatnya soal cara data disimpan di memori. Aku bahas bedanya, kenapa itu penting, dan kapan kamu tetap mending pakai list.
Apa beda dasar NumPy array dan list Python?
List Python adalah kumpulan pointer ke objek yang tersebar di memori, dan tiap elemen bisa tipe berbeda. NumPy array adalah blok memori tunggal yang rapat, berisi elemen dengan satu tipe data yang sama. Perbedaan penyimpanan inilah sumber utama beda kecepatannya.
Di list, angka 5 bukan sekadar angka. Dia objek Python lengkap dengan header dan metadata. List cuma nyimpen alamat menuju objek itu.
Di array, angka 5 disimpan sebagai bilangan mentah 8 byte, nempel langsung sama tetangganya. Nggak ada objek pembungkus, nggak ada pointer lompat-lompat.
Kenapa NumPy array lebih cepat?
Array lebih cepat karena tiga alasan: data satu tipe disimpan berdampingan sehingga ramah cache CPU, operasi dijalankan di kode C yang sudah dikompilasi, dan array mendukung vectorization sehingga nggak butuh loop Python per elemen. Gabungan ini bikin operasi numerik jauh lebih efisien.
- Memori rapat. Elemen array nempel berurutan, jadi CPU bisa baca sekaligus dalam blok. List harus loncat ke alamat berbeda buat tiap elemen.
- Satu tipe data. Karena semua elemen sama tipe, NumPy nggak perlu cek tipe tiap kali. List harus cek tipe tiap elemen saat operasi.
- Vectorization. Operasi seperti tambah semua elemen jalan di loop C internal, bukan loop Python yang lambat.
Vectorization ini yang paling terasa. Kamu tulis arr * 2, dan NumPy kaliin semua elemen tanpa kamu nulis loop. Kalau belum familiar konsep dasarnya, baca dulu dasar-dasar NumPy array.
Perbandingan langsung: array vs list
| Aspek | NumPy array | List Python |
|---|---|---|
| Tipe data | Seragam (satu tipe) | Boleh campur |
| Penyimpanan | Blok memori rapat | Pointer tersebar |
| Operasi numerik | Vectorized, cepat | Loop Python, lambat |
| Pemakaian memori | Lebih hemat | Lebih boros |
| Ubah ukuran | Mahal (bikin array baru) | Murah (append cepat) |
| Fleksibilitas | Rendah | Tinggi |
Contoh Kasus: Hitung Total Penjualan Toko Berkah
Toko Berkah punya catatan 1 juta transaksi harian dalam setahun. Tim mau kaliin tiap jumlah unit sama harga buat dapat nilai penjualan per transaksi, lalu totalin.
Pakai list Python murni:
unit = [3] * 1_000_000
harga = [15000] * 1_000_000
total = 0
for u, h in zip(unit, harga):
total += u * h
Pakai NumPy:
import numpy as np
unit = np.full(1_000_000, 3)
harga = np.full(1_000_000, 15000)
total = (unit * harga).sum()
Di laptop biasa, versi list makan sekitar 90 milidetik buat 1 juta baris, sementara versi NumPy selesai di sekitar 3 milidetik. Itu sekitar 30 kali lebih cepat, dan bedanya makin lebar makin banyak data.
Angka pastinya beda-beda tergantung mesin, tapi polanya konsisten: makin banyak angka, makin jauh NumPy unggul. Buat data kecil di bawah ratusan elemen, bedanya nggak kerasa.
Kalau kamu masih sering nulis loop buat olah tabel, cek juga alternatif iterrows yang lebih cepat di Pandas. Prinsipnya sama: hindari loop Python per baris.
Cara ukur sendiri dengan timeit
Kamu bisa buktiin sendiri pakai modul timeit. Ini cara ngukur waktu eksekusi kecil secara adil.
import timeit
import numpy as np
setup_list = 'data = list(range(100000))'
kode_list = 'hasil = [x * 2 for x in data]'
setup_np = 'import numpy as np; data = np.arange(100000)'
kode_np = 'hasil = data * 2'
print(timeit.timeit(kode_list, setup_list, number=100))
print(timeit.timeit(kode_np, setup_np, number=100))
Jalanin di mesinmu sendiri. Angka absolutnya bakal beda, tapi versi NumPy hampir selalu menang buat operasi numerik massal.
Kapan list Python tetap lebih baik?
List menang kalau datanya bukan numerik murni, sering berubah ukuran, atau jumlahnya kecil. NumPy punya overhead setup, jadi buat data kecil atau operasi non-angka, list lebih praktis dan nggak butuh library tambahan.
- Data campuran. List bisa nampung angka, teks, dan objek dalam satu wadah. Array harus satu tipe.
- Sering append. Nambah elemen ke list itu murah. Nambah ke array bikin array baru tiap kali, jadi mahal.
- Data kecil. Buat puluhan elemen, overhead NumPy nggak sepadan sama keuntungannya.
- Operasi non-numerik. Kalau kamu cuma nyimpen dan iterasi objek, list lebih sederhana.
Kesalahan Umum
- Loop manual di atas array. Nulis
forbuat operasi yang bisa vectorized bikin array kehilangan keunggulannya. Pakai operasi NumPy langsung. - Append berulang ke array.
np.appenddalam loop bikin array baru tiap iterasi. Mending kumpulin di list dulu, baru konversi sekali. - Campur tipe di array. Kalau masukin angka dan teks, NumPy paksa semua jadi string, dan operasi angka jadi gagal.
- Konversi bolak-balik. Ubah list ke array lalu balik ke list terus-terusan buang waktu. Pilih satu struktur dan konsisten.
FAQ
Apakah NumPy selalu lebih cepat dari list?
Nggak selalu. Buat data numerik dalam jumlah besar, NumPy hampir selalu menang berkat memori rapat dan vectorization. Tapi buat data kecil di bawah ratusan elemen, overhead setup NumPy bikin bedanya nggak kerasa, bahkan kadang list lebih cepat. NumPy juga nggak cocok buat data campuran tipe atau yang sering berubah ukuran.
Kenapa NumPy array hemat memori?
Karena array nyimpen nilai mentah tanpa pembungkus objek. Di list Python, tiap angka adalah objek penuh dengan header dan metadata, jadi makan puluhan byte per elemen. Array nyimpen tiap angka cuma sebesar tipe datanya, misalnya 8 byte buat integer 64-bit. Buat jutaan elemen, selisih memorinya jadi besar.
Apa itu vectorization di NumPy?
Vectorization adalah menjalankan operasi ke seluruh array sekaligus tanpa nulis loop Python. Kamu tulis arr + 1, dan NumPy tambahin 1 ke semua elemen lewat loop C internal yang cepat. Ini beda dari loop Python yang mengeksekusi tiap iterasi di level interpreter yang lambat. Vectorization jadi alasan utama kode NumPy ringkas sekaligus ngebut.
Apakah saya perlu belajar list dulu sebelum NumPy?
Iya, sebaiknya. List Python konsep dasar yang kepakai di mana-mana, termasuk buat nyiapin data sebelum masuk NumPy. Setelah paham list, indexing, dan slicing, transisi ke array jadi gampang karena banyak sintaksnya mirip. NumPy nambahin kemampuan numerik di atas fondasi yang udah kamu punya dari list.
Bisakah saya campur NumPy array dan list dalam satu proyek?
Bisa, dan itu umum. Banyak proyek pakai list buat data mentah campuran atau yang sering di-append, lalu konversi ke array waktu butuh hitungan numerik cepat. Kuncinya konsisten: kumpulin data di list dulu, konversi sekali dengan np.array(), lalu kerjakan operasi berat di array. Hindari konversi bolak-balik yang buang waktu.
Penutup
Beda kecepatan NumPy dan list turun dari cara data disimpan. Ringkasnya:
- NumPy nyimpen angka satu tipe dalam blok rapat, jadi operasi numerik puluhan kali lebih cepat.
- List menang buat data campuran, sering append, atau jumlah kecil.
- Kalau kamu nulis loop di atas array, kamu buang keunggulan NumPy. Pakai vectorization.
Mau lancar olah data numerik di Python? Lanjut praktek dari dasar-dasar NumPy array, dan mulai ganti loop lama kamu dengan operasi vectorized.
Referensi resmi: dokumentasi resmi NumPy.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Uji Chi-Square: Konsep dan Contoh Praktis (2026)
Mau tau apakah metode bayar berhubungan sama tipe pelanggan? Uji chi-square jawabannya. Ini konsep, rumus, cara hitung di Python, plus contoh data toko nyata.
Korelasi Spearman: Kapan Dipakai vs Pearson
Korelasi Spearman kerja di peringkat, bukan nilai asli. Ini bedanya dengan Pearson, kapan pakai yang mana, dan cara hitungnya di Excel dan Python.
Korelasi Pearson: Cara Menghitung dan Membaca
Korelasi Pearson ngukur seberapa kuat dua angka bergerak bareng. Ini cara hitung dan baca nilainya dengan contoh dataset toko Indonesia.