Pengenalan & Operasi Array NumPy
17 Sel • Python 3 (WebAssembly Kernel)Pengenalan & Komputasi Array NumPy
Pernahkah Anda bertanya:
"Python kan sudah punya tipe data List untuk menyimpan banyak data sekaligus. Kenapa kita masih butuh NumPy?"
Jawabannya ada pada kecepatan komputasi dan efisiensi memori.
List bawaan Python dirancang sangat fleksibel—ia bisa menyimpan angka, teks, dan boolean dalam satu wadah. Namun karena terlalu fleksibel, komputer harus menyimpan setiap elemen di lokasi memori yang terpisah-pisah (pointer heap). Ketika data Anda berjumlah jutaan baris, melakukan perhitungan matematika dengan List akan terasa sangat lambat.
Di sinilah NumPy (Numerical Python) hadir. NumPy menyimpan data bertipe seragam (homogeneous) secara berurutan di dalam satu blok memori komputer yang padat (contiguous array). NumPy ditulis menggunakan bahasa C, sehingga kalkulasi matematikanya dijalankan langsung di tingkat perangkat keras (hardware level) dengan kecepatan hingga puluhan kali lebih cepat dibanding List biasa.
1. Memasang Pustaka NumPy
Sebelum menggunakan NumPy, pastikan pustaka ini sudah terpasang. Di Google Colab pustaka ini sudah tersedia, tetapi di laptop lokal Anda bisa memasangnya lewat perintah pip:
Requirement already satisfied: numpy in c:\laragon\bin\python\python-3.10\lib\site-packages (2.2.6)
[notice] A new release of pip available: 22.2.2 -> 26.2.1
[notice] To update, run: python.exe -m pip install --upgrade pip2. Fungsi Pembuat Array Instan
Sering kali kita butuh membuat array berisi angka awal tanpa harus mengetik satu per satu secara manual:
np.zeros((baris, kolom)): Membuat array berisi angka 0 (biasa dipakai sebagai wadah penampung awal).np.ones((baris, kolom)): Membuat array berisi angka 1.np.arange(awal, akhir, langkah): Membuat deret angka urut (mirip fungsirangebawaan Python).np.linspace(awal, akhir, jumlah_titik): Membuat titik-titik angka berjarak sama rata.
Array Nol (2x4):
[[0. 0. 0. 0.]
[0. 0. 0. 0.]]
Deret Genap: [ 0 2 4 6 8 10 12 14 16 18]
Linspace (0 s.d 1): [0. 0.25 0.5 0.75 1. ]3. Mengakses dan Memotong Data (Indexing & Slicing)
Bagaimana cara mengambil baris tertentu, kolom tertentu, atau angka spesifik di dalam matriks? Format standarnya adalah:
Gunakan tanda titik dua : untuk mengambil seluruh data pada baris atau kolom tersebut.
Nilai baris 1, kolom 2 : 85
Baris kedua penuh : [75 70 88]
Kolom ketiga penuh : [90 88 89]4. Operasi Matematika Vektorisasi (Vectorization)
Kelebihan utama NumPy adalah operasi matematika langsung diterapkan ke setiap elemen secara serentak tanpa perlu membuat perulangan for (vectorization):
Harga awal : [10000 25000 50000 75000]
Harga setelah diskon : [ 9000. 22500. 45000. 67500.]
Total bayar (+ ongkir): [11000. 25500. 50000. 71500.]5. Menyaring Data Berdasarkan Kondisi (Boolean Indexing)
Dalam analisis data, kita sangat sering menyaring angka yang memenuhi kriteria tertentu (misalnya nilai di atas batas kelulusan atau penjualan di atas target).
Di NumPy, Anda cukup memasukkan kondisi logika ke dalam kurung siku array[kondisi]. Ini jauh lebih cepat dan bersih daripada membuat percabangan if di dalam loop.
Status kelulusan (Boolean): [False True False True False True True False True]
Daftar skor yang lulus (>= 75): [82 90 88 95 78]
Jumlah peserta yang lulus : 56. Mengubah Dimensi Array (reshape)
Dalam analisis data dan machine learning, kita sering kali perlu mengubah susunan data dari 1 dimensi (deret angka) menjadi tabel 2 dimensi (baris x kolom), misalnya mengubah 12 data bulanan menjadi matriks 3 kuartal x 4 bulan.
Gunakan method .reshape(baris, kolom). Syaratnya: total jumlah elemen awal dan akhir harus sama persis.
Array 1D awal: [ 1 2 3 4 5 6 7 8 9 10 11 12]
Matriks 3 baris x 4 kolom:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
Matriks 4 baris x 3 kolom:
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]7. Menghitung Statistik Cepat dengan NumPy
NumPy menyediakan fungsi statistik bawaan berkinerja tinggi untuk meringkas data angka numerik:
Total Keseluruhan (Sum) : 755
Rata-rata (Mean) : 75.5
Nilai Tengah (Median) : 80.0
Standar Deviasi (Std) : 15.31
Penjualan Terendah (Min): 45
Penjualan Tertinggi(Max): 958. Studi Kasus: Analisis Penjualan Mingguan 3 Cabang Toko
Mari kita terapkan seluruh konsep yang telah dipelajari ke dalam studi kasus nyata.
Sebuah jaringan toko ritel memiliki 3 cabang (Cabang Jakarta, Surabaya, dan Bandung). Data penjualan produk selama 7 hari (Senin s.d. Minggu) dicatat ke dalam satu matriks 2 dimensi ukuran 3 baris x 7 kolom.
Tugas kita:
- Menghitung total penjualan masing-masing cabang dalam seminggu (
axis=1). - Menghitung rata-rata penjualan harian seluruh cabang gabungan (
axis=0). - Menentukan cabang mana yang memiliki penjualan tertinggi.
=== Laporan Performa Mingguan Toko Ritel ===
Cabang Jakarta : Total = 158 unit | Rata-rata = 22.6 unit/hari
Cabang Surabaya : Total = 101 unit | Rata-rata = 14.4 unit/hari
Cabang Bandung : Total = 200 unit | Rata-rata = 28.6 unit/hari
Cabang dengan performa terbaik: Cabang Bandung (200 unit)
Rata-rata penjualan gabungan per hari:
Sen: 15.0 unit | Sel: 18.0 unit | Rab: 19.0 unit | Kam: 20.3 unit | Jum: 24.3 unit | Sab: 29.3 unit | Min: 27.0 unit |