Lazy loaded image
Words 0Read Time 1 min
Invalid Date
status
Published
type
Post
date
Apr 19, 2026 02:59 PM
tags
manajemen
data
category
post
password
icon

📌 Topik Hari Ini

Konsep Dasar: kenapa belajar Numpy?

Sebelumnya kita sudah belajar mengenai list di Python, kan?
Contoh:
 
Itu adalah list biasa yang akan mengembalikan variabel data (tempat penyimpanan) menjadi [1, 2, 3, 4].
 
Tapi kalau mau:
  • menjumlahkan semua isi list
  • mengalikan seluruh isinya dengan angka
  • bekerja dengan data dalam jumlah besar
maka list mulai terasa lelet dan tidak fleksibel untuk digunakan.
 
Maka, di sinilah NumPy muncul.
 
  • Apa itu Numpy dan Array?
    • NumPy (singkatan dari Numerical Python) adalah pustaka (library) Python yang digunakan untuk:
      • Membuat array (struktur data seperti list tapi lebih cepat dan efisien untuk angka)
      • Melakukan perhitungan matematika, statistik, dan operasi vektor/matriks
      • Digunakan sebagai dasar untuk pustaka data lainnya seperti Pandas, Scikit-learn, TensorFlow
      NumPy sangat berguna dalam pengolahan data dan machine learning karena kecepatannya dalam bekerja dengan angka dalam jumlah besar.
  • Array sendiri adalah wadah seperti list, tapi lebih teratur, lebih cepat, dan khusus untuk angka dan notasi ilmiah dalam python.
Analoginya, bayangkan saja array itu seperti kotak telur:
Kalau list itu seperti tas kresek (acak isinya: ada telur, roti, minuman), maka array seperti karton isi telur 6 biji yang teratur, satu jenis, gampang ditumpuk dan diproses cepat.
 
  • Instalasi Numpy
    • Jika memakai Google Colab, NumPy sudah tersedia otomatis. Tapi kalau offline, dapat melakukan instalasi pada terminal atau cmd:
      pip adalah alat untuk menginstal pustaka python, kemudian import library-nya untuk mulai menggunakan:
       
 

Penggunaan Numpy

Membuat array dapat dilakukan dengan beberapa cara, sepert:
 
  • Array 1 Dimensi itu Seperti Barisan
    • Untuk pembuktian efektivitas Numpy di bandingin menggunakan list biasa, perhatikan syntax berikut:
       
      Output: [10 20 30]
       
      Ini adalah array 1 dimensi → seperti satu baris angka. Bisa dibayangkan seperti: 10 → 20 → 30
       
      Kenapa array ini harus digunakan? Tentu saja karena dapat langsung melakukan operasi matematika terhadap array tersebut. Contohnya saja angka + 5 akan menghasilkan [15 25 35]. Hal ini tentunya lebih efisien dibandingkan menggunakan perulangan for pada list biasa.
       
       
      Tapi array cukup satu baris dan semua elemen langsung ditambahkan 5!
  • 2 Dimensi itu Seperti Tabel atau Matriks— memiliki bentuk, yakni seperti baris dan kolom
Output:
 
Analoginya:
Bayangkan seperti tabel atau Excel, 2 baris × 2 kolom. Inilah yang disebut dengan array 2 dimensi.
 
Kemudian, dari array 2 dimensi ini sifat-sifat array akan menjadi lebih jelas perbedaannya dibandingkan dengan menggunakan array 1 dimensi sebagai model pembelajaran. Sifat-sifat ini dikenal juga sebagai properties array numpy.
 
 
  • Sifat/atribut suatu array
    • Sifat (Atribut)
      Penjelasan Singkat
      .shape
      Bentuk (baris, kolom)
      .ndim
      Jumlah dimensi array (1D, 2D, 3D, dst.)
      .size
      Jumlah total elemen
      .dtype
      Tipe data elemen
      .itemsize
      Ukuran satu elemen (dalam byte)
      .nbytes
      Total memori array (size × itemsize)
      .T
      Transpose (baris ↔ kolom)
      Untuk lebih jelasnya, saya akan memperlihatkannya secara langsung.
       
       
      jika syntax di atas dijalankan, hasilnya akan seperti ini:
       
      arr sendiri akan menghasilkan array:
       
      Yang jika dijabarkan akan menjadi seperti ini:
    • shape : Array ini berbentuk tabel 2x3 → 2 baris dan 3 kolom.
    • ndim : Array ini punya 2 dimensi → baris dan kolom. Kalau hanya baris saja (array 1D), hasilnya 1.
    • size : Ada 6 angka/elemen total di dalam array itu → 2 baris × 3 kolom = 6
    • dtype : Semua isi array ini bertipe integer 64-bit. Bisa juga float64 kalau isinya ada angka desimal.
    • itemsize : Setiap angka di dalam array ini butuh 8 byte memori.
      • Biasanya:
      • int64 dan float64 → 8 byte
      • int32 → 4 byte
    • nbytes : Total memori yang dipakai array → 6 elemen × 8 byte = 48 byte
    • transpose : Menggunakan baris sebagai kolom dan/atau sebaliknya.
 

Operasi pada Numpy Array

  • Arithmetic Operations (paling sering dipakai)
    • Adalah operasi matematika dasar yang dilakukan per-element (element wise) pada array.
      Jenis-jenisnya:
      Operator
      Keterangan
      Function
      Contoh Input
      Output
      +
      Pertambahan
      np.add()
      [1,2] + [3,4]
      [4,6]
      -
      Pengurangan
      np.subtract()
      [5,3] - [1,2]
      [4,1]
      *
      Perkalian
      np.multiply()
      [2,3] * [4,5]
      [8,15]
      /
      Pembagian
      np.divide()
      [10,8] / [2,4]
      [5,2]
      **
      Pangkat
      np.power()
      [3,2] ** [2,3]
      [9,8]
      %
      Modulus (Sisa hasil bagi)
      np.mod()
      [7,10] % [3,4]
      [1,2]
      Sekilas, terlihat mirip dengan operasi aritmatika di day 1. Namun perbedaannya bukan pada simbol/syntax-nya, melainkan pada skala eksekusi dan tipe data yang diolah, seperti yang telah dijelaskan sebelumnya (harus menggunakan loop).
       
      Terlihat membingungkan? Saya akan mencobanya secara langsung. Pertama-tama saya membagi array sebelumnya menjadi 2 variabel atau array yang berbeda.
       
Dua array tersebut, yakni a dan b akan menghasilkan array 1 dimensi yang masing-masing memiliki bentuk 1 baris dan 3 kolom. Dari keduanya, saya menerapkan operasi aritmatika.
Yang menghasilkan output:
 
Dari a dan b juga dapat dilakukan dengan menggunakan fungsi bawaan Numpy. Seperti np.add() atau sejenisnya:
Dan hasilnya akan tetap sama:
Selain itu, pada penerapan operasi aritmatika dalam Numpy juga terdapat konsep atau fitur yang menawarkan perhitungan matematika yang lebih mudah. Sebut saja seperti broadcasting dan sebagainya.
  • Broadcasting: operasi aritmatika dengan skalar (angka tunggal)
    • Adalah suatu cara dalam Numpy yang memungkinkan kita untuk melakukan operasi aritmatika pada array dengan bentuk yang berbeda tanpa harus membentuknya ulang (menghindari pemakaian loop atau memperbesar ukuran array secara manual).
       
      Analoginya seperti ini:
      Bayangkan Anda punya 1 kotak pizza (skalar) dan 3 teman (array). Bagaimana membagi pizza secara adil? Inilah konsep broadcasting!
       
      Dengan menggunakan pengandaian seperti itu, kita dapat memecahnya menjadi kotak-kotak kecil:
    • Skalar = 1 kotak pizza
    • Array = [Teman1, Teman2, Teman3]
    • Operasi = "Berikan 1 potong pizza ke setiap teman"
    •  
      Di Numpy:
       
      Bagaimana? Cara kerja broadcasting adalah dengan menyesuaikan array yang lebih kecil agar sesuai dengan bentuk array yang lebih besar dengan mereplikasi/menyebarkan (broadcast) nilainya (skalar) di sepanjang dimensi (array) yang diperlukan.
       
      Dalam hal ini:
    • Nilai skalar 1 pizza disiarkan agar sesuai dengan array teman yang memiiki 1 dimensi.
    • Hasilnya, elemen baru dibuat skalar ditambahkan ke setiap elemen teman yang menciptakan elemen baru di mana setiap teman di tambahkan sebesar 1 nilai.
    •  
      Pada titik ini, konsep dan cara pengerjaannya hampir terlihat mirip dengan perkalian pada matriks. Namun keduanya pada dasarnya berbeda. Sehingga ada aturan tertentu dalam penggunaan broadcasting:
      Dimensi array harus compatible
      • Jika dua array memiliki jumlah dimensi berbeda, array dengan dimensi lebih kecil akan ditambahkan dimensi "1" di depannya sampai dimensinya sama.
        • Contoh:
          Output:
           
      Ukuran setiap dimensi harus sama atau salah satunya = 1
      Contoh Valid:
      Output:
       
      (3,) adalah bentuk (shape) dari array 1D (vekto) dengan 3 elemen. Di mana dalam NumPy, bentuk array selalu ditulis dengan dimensi yang ada dan sengaja dibuat sebagai array 1D ((3,)) untuk menunjukkan bagaimana NumPy melakukan broadcasting antara array 1D dan 2D. Walaupun jika ingin menyatakan ke daam 2D, dengan 1 baris dan 3 kolom, (1, 3), prosesnya tetap mirip,
       
      Q: Mengapa NumPy membiarkan (3,) di-broadcast dengan (3, 1) (menjadi bentuk 2D)?
      A: Untuk memudahkan operasi antara vektor dan matriks tanpa harus selalu mengubah bentuk array.
       
      Visualisasi proses:
       
      Aturan yang Terjadi:
      • Expand Dimensions: B (3,) → (1,3)
      • Broadcast Rules:
        • Axis 0: 3 vs 1 → expand B ke 3
        • Axis 1: 1 vs 3 → expand A ke 3
      • Result Shape: (3,3)
       
      Contoh Error:
      Selalu di mulai dari kanan → kiri
      Contohnya, kita akan membuat 2 array dengan dimensi yang berbeda:
       
      Kedua array tersebut dibuat menggunakan numpy.ones() yang fungsinya mengembalikan array baru dengan angka 1 yang memiliki bentuk dan tipe tertentu.
       
      Syntax : numpy.ones(shape, dtype = None, order = 'C').
       
      Dengan parameternya:
      • shape(int atau sequence dari int). Pada contoh ini, array yang diminta berdimensi 3, sehingga kode yang diambil adalah (depth, rows, columns).
      • dtype yang ingin dinyatakan
      • order yang menyatakan urutan
       
      Ngomong-ngomong, kedua array akan membentuk seperti ini:
       
      Sehingga ketika perintah print((A + B).shape) dijalankan, hasilnya akan mencetak (2, 3, 4).
       
      Dengan analogi:
      A adalah kotak besar berisi 2 laci, yang masing-masing memiliki 3 rak dan tiap raknya mempunyai 4 kotak kecil. Sedangkan B adalah stiker dengan 3 baris dan 1 kolom.
       
      Jika dirincikan, prosesnya kurang lebih menjadi seperti ini:
      • Langkah 1: Menyamakan ukuran kemasan
        • Kotak A punya 3 dimensi (2 laci, 3 rak, 4 kotak)
        • Stiker B hanya 2 dimensi (3 baris 1 kolom)
        • Kita tambahkan 1 dimensi kosong di depan B, sehingga menjadi (1, 3, 1) → yakni 1 laci.
      • Langkah 2: Proses penempatan stiker
        • Untuk dimensi rak (3 vs 3):
          • Ukuran sama (3 rak), jadi stiker pas tepat
          • Tidak perlu penyesuaian
        • Untuk dimensi laci (2 vs 1):
          • Stiker hanya punya 1 laci, tapi kotak punya 2
          • Solusi: duplikasi stiker untuk laci kedua
          • Hasilnya stiker sekarang berukuran (2, 3, 1) dari (1, 3, 1).
        • Untuk dimensi kotak kecil (4 vs 1):
          • Stiker hanya cover 1 kotak, tapi ada 4 kotak
          • Solusi: perlebar stiker ke 4 kotak
          • Hasil: stiker sekarang (2, 3, 4)
           
      Dan inilah A dan B setelah di broadcast:
       
      Atau bisa dicek menggunakan numpy.broadcast_arrays() untuk melihat hasil dari broadcasting. Dan ini adalah hasil dari A + B:
       
      Hasil Operasi Memiliki Shape Maksimal dari Setiap Dimensi
      • Shape output adalah keluasan maksimal setiap dimensi dari input.
      Contoh:
       
      Pada contoh tersebut, shape output (5, 3, 4) lebih besar dibandingkan dengan kedua inputan (5, 1, 3) dan (4, 3)(1, 4, 3).
       
      Sekarang saya akan menunjukkan proses broadcastnya:
      • Langkah 1: Menyamakan Jumlah Dimensi
        • A: (5, 1, 3) → sudah 3 dimensi
        • B: (4, 3) → ditambah 1 dimensi di depan → (1, 4, 3)
      • Langkah 2: Membandingkan Dimensi Satu per Satu (dari kanan ke kiri)
        • Dimensi ke-2 (kolom):
          • A: 3
          • B: 3 → Cocok! Tidak perlu broadcasting
        • Dimensi ke-1 (baris):
          • A: 1
          • B: 4 → A akan di-broadcast menjadi 4 (diulang 4 kali)
        • Dimensi ke-0 (lapisan):
          • A: 5
          • B: 1 → B akan di-broadcast menjadi 5 (diulang 5 kali)
      • Shape Hasil Akhir:
        • Ambil nilai maksimum dari setiap dimensi:
          • Dimensi 0: max(5, 1) = 5
          • Dimensi 1: max(1, 4) = 4
          • Dimensi 2: max(3, 3) = 3 → Jadi shape akhir: (5, 4, 3)
       
       
  • Matematika functions
    • Kategori Fungsi Matematika
      • Fungsi Dasar
        •  
      • Trigonometri
        •  
      • Pembulatan
        •  
        Cara Kerja Internal NumPy mengoptimalkan operasi dengan:
      • Vectorization: Proses seluruh array sekaligus
        • Loop C-level: Lebih cepat daripada Python loop
      • SIMD Instructions: Menggunakan instruksi processor khusus
      •  
        Contoh benchmark:
         
        Aplikasi Nyata
      • Normalisasi Data
        • Transformasi Feature
          • Engineering Fisika
            Untuk informasi lebih lanjut mengenai operator fungsi matematika di Numpy Array, saya sarankan untuk membaca dokumentasi resminya. Atau Anda dapat memeriksanya di Geeksforgeeks, tempat saya belajar.
             
        • Comparison and Logical Operations
          • Comparison operator
            • Sama seperti pada hari pertama, operator perbandingan mengembalikan nilai/array boolean dalam bentuk yang sama. Sehingga operator yang digunakan adalah:
               
              Contoh:
               
          • Logical operators
            • Juga seperti operator perbandingan, Logical operators pada Numpy Array memiliki kesamaan dengan python di hari pertama. Letak perbedaannya adalah penggunaan tanda (operator) yang akan digunakan dan pemakaiannya yang haram.
               
              Haram? Apakah Anda penasaran mengapa?
              Ya, mari kita pelajari ini bersama!
               
              Seperti yang telah diketahui, operator logika digunakan untuk menggabungkan kondisi— dua atau mungkin lebih. Di mana pada python terdapat 3 operator logika yakni and, or dan not.
               
              Tapi dalam Numpy juga sama, terdapat 3 operator logika yang dapat digunakan, yakni:
              Fungsi Numpy
              Arti
              Contoh
              np.logical_and()
              Kedua kondisi harus True
              np.logical_and(a > 3, a < 7)
              np.logical_or()
              Salah satu kondisi cukup True
              np.logical_or(a < 4, a > 6)
              np.logical_not()
              Membalik kondisi
              np.logical_not(a > 5)
              Sebagai contoh:
               
              Syntax di atas adalah contoh penggunaan operator logika pada Numpy. Jika diperjelas, masing-masing perintah print() ingin menampilkan operasi (wise element ) terhadap semua elemen di aray a. Sebagai referensi, saya juga melampirkan tabel kebenaran.
               
              Tabel kebenaran
              Sumber: pribadi
               
              Karena itu, kita akan memecah syntax-nya menjadi bagian-bagian kecil.
               
            • a > 3:
              • 3 > 3 menghasilkan False
              • 5 > 3 menghasilkan True
              • 7 > 3 menghasilkan True
              • Menghasilkan array boolean sementara: [False True True].
            • a < 7:
              • 3 < 7 menghasilkan True
              • 5 < 7 menghasilkan True
              • 7 < 7 menghasilkan False
              • Menghasilkan array boolean sementara: [True True False].
            • Mendapatkan list boolean
            • Fungsi logical_and kemudian mengambil kedua array boolean sementara ini dan melakukan operasi AND :
              • True AND True menghasilkan True
              • False AND True menghasilkan False
              • True AND False menghasilkan False
              Output: [False True False].
               
            • a < 4:
              • 3 < 4 menghasilkan True
              • 5 < 4 menghasilkan False
              • 7 < 4 menghasilkan False
              • Menghasilkan array boolean sementara: [True False False].
            • a > 6: Operasi perbandingan ini juga dilakukan pada setiap elemen di array a.
              • 3 > 6 menghasilkan False
              • 5 > 6 menghasilkan False
              • 7 > 6 menghasilkan True
              • Menghasilkan boolean sementara: [False False True].
            • Mendapatkan list boolean
              • True OR False menghasilkan True
              • False OR False menghasilkan False
              • False OR True menghasilkan True
              Output: [True False True].
               
            • a == 5:
              • 3 == 5 menghasilkan False
              • 5 == 5 menghasilkan True
              • 7 == 5 menghasilkan False
              • Menghasilkan array boolean sementara: [False True False].
            • Mendapatkan list boolean
              • NOT False menghasilkan True
              • NOT True menghasilkan False
              • NOT False menghasilkan True
              Output: [True False True]
               
              Selain itu terdapat beberapa hal yang harus diperhatikan dalam penulisan operator binary dalam Numpy Array:
              ⚠️ Peringatan Penting!
            • Jangan tertukar operator:
              • Urutan operasi:
                •  
                  Sudah mendapatkannya? Yaps, itulah yang haram.
                   
                  Selanjutnya, logical operations juga dapat digunakan menggunakan fungsi-fungsi seperti di bawah ini:
                • bitwise_and() or &
                • bitwise_or() or |
                • bitwise_xor() or ^
                • left_shift() or <<
                • right_shift() or >>
                • Namun sayangnya akan dijelaskan secara terpisah → [klik di sini].
                   
            • String Operations (menggunakan modul khusus numpy.char) NumPy didesain untuk komputasi numerik, sehingga operasi string ditempatkan di sub-modul khusus:
              •  
              • Fungsi String Dasar yang Paling Sering Dipakai
                • Konversi Case
                  • Operasi Pencarian
                    • Manipulasi String
                      •  
                  • Contoh Aplikasi Nyata
                    • Case 1: Membersihkan Data Teks
                      • Case 2: Ekstrak Substring
                        •  
                    • Fungsi Lanjutan untuk NLP Dasar
                      •  
                    • Perbandingan dengan Python Standar
                      • Operasi
                        Python Native
                        NumPy (np.char)
                        Upper Case
                        "text".upper()
                        np.char.upper(arr)
                        Split
                        "text".split()
                        np.char.split(arr)
                        Replace
                        "text".replace()
                        np.char.replace(arr)
                        Keunggulan NumPy:
                      • Operasi vektorisasi (lebih cepat untuk array besar)
                      • Integrasi dengan array multidimensi
                       
                    • Keterbatasan
                      • Tidak mendukung operasi teks kompleks seperti:
                        • Regex advance
                        • Stemming/Lemmatization
                      • Untuk NLP berat, lebih baik gunakan library khusus seperti:
                      •  
                    • Tips Penting
                      • Konversi ke String: Pastikan array bertipe string:
                        • Gabung dengan Operasi Lain:
                          • Performance: Untuk array kecil, operasi Python native bisa lebih cepat:
                            •  
                          Contoh Integrasi: Preprocessing Data Teks
                           

                      Index dan Slicing

                      Indexing dan slicing adalah cara untuk mengakses dan memodifikasi elemen array NumPy.
                      • Basic Indexing (Akses Elemen Tunggal)
                        • Slicing (Akses Sub-Array)
                          • Visualisasi Slicing:
                        • Multi-Dimensional Arrays
                          • Kombinasi Indexing & Slicing
                          • Slicing dengan Step
                          • Aturan Penting
                            • Start inklusif, stop eksklusif
                              • Default value:
                                • start = 0
                                • stop = panjang array
                                • step = 1
                              • Indeks negatif:
                              • Contoh Praktis
                                • Tips: Gunakan : tanpa angka untuk mengambil seluruh axis:
                               

                              📘 Ringkasan

                              Cheetsheet Numpy Array

                              🔧 Tools Digunakan

                              • Python
                              • Google Colab

                              📈 Progress

                              • Durasi: Sebenarnya lebih dari sehari
                              • Kode atau Proyek Mini:

                              📎 Resource

                              🗣️ Refleksi

                              • Mengapa Numpy begitu membingungkan? Karena itulah belajar.
                              上一篇
                              Day 5 - 6 — Fungsi & Import Modul
                              下一篇
                              Resume

                              Comments
                              Loading...