# Nakafa Framework: LLM URL: /id/subject/university/bachelor/ai-ds/ai-programming/indexing-slicing-numpy Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/ai-programming/indexing-slicing-numpy/id.mdx Output docs content for large language models. --- export const metadata = { title: "Indexing dan Slicing dengan NumPy", description: "Pelajari teknik indexing dan slicing NumPy: array 1D, 2D, boolean mask, advanced indexing. Panduan lengkap dengan contoh kode teruji untuk pemrograman AI.", authors: [{ name: "Nabil Akbarazzima Fatih" }], date: "09/20/2025", subject: "Pemrograman AI", }; ## Konsep Dasar Indexing dan Slicing Indexing dan slicing adalah alat untuk mengekstrak data spesifik dari array NumPy. Bayangkan indexing sebagai penunjuk ke lokasi tepat, sedangkan slicing mengambil seluruh bagian sekaligus. Berbeda dengan list Python yang membuat copy, slicing NumPy membuat view yang berbagi memori dengan array asli. Perilaku berbagi memori ini membuat NumPy sangat efisien tetapi memerlukan perhatian khusus untuk menghindari modifikasi yang tidak diinginkan. [Dokumentasi indexing NumPy](https://numpy.org/doc/stable/user/basics.indexing.html) menyediakan contoh ekstensif pola indexing lanjutan ketika kamu butuh seleksi data yang lebih canggih. ## Operasi Array 1D Array satu dimensi menggunakan sintaks yang sama dengan list Python. Slicing mengembalikan view dari data, bukan copy, sehingga perubahan pada view akan mempengaruhi array asli. Konsep penting dalam slicing NumPy adalah perbedaan antara view dan copy. View berbagi memori dengan array asli, sedangkan copy adalah duplikat independen. ## Operasi Array Multidimensi Array multidimensi menggunakan tuple integer untuk indexing. Setiap dimensi dipisahkan dengan koma dalam tanda kurung siku. Assignment dan slicing dapat dikombinasikan untuk operasi yang kompleks. Slicing lanjutan memungkinkan pengambilan subarray dengan pola yang kompleks: ### Ringkasan Operasi 2D | Operasi | Deskripsi | Contoh Hasil | |---------|-----------|--------------| | `a[2,1]` | Elemen baris 2, kolom 1 | Satu nilai: `8.0` | | `a[1,:]` | Seluruh baris 1 | Array 1D: `[4. 5. 6.]` | | `a[:,2]` | Seluruh kolom 2 | Array 1D: `[3. 6. 9. 12.]` | | `a[1:3, 0:2]` | Subarray baris 1-2, kolom 0-1 | Array 2D: `[[4. 5.], [7. 8.]]` | | `a[::2, :]` | Setiap baris kedua | Array 2D dengan baris 0, 2 | | `a[:, ::2]` | Setiap kolom kedua | Array 2D dengan kolom 0, 2 | ## Advanced Indexing Advanced indexing memungkinkan penggunaan array integer atau boolean untuk mengakses elemen dengan pola yang kompleks. Indexing dengan array integer membuat copy baru daripada view. Copy memiliki shape yang sama dengan index array. Boolean mask adalah teknik powerful untuk filtering data berdasarkan kondisi tertentu. Indexing dengan array boolean mengambil elemen di mana nilai True ditemukan. 1) & (a < 4) print("Complex mask (a > 1) & (a < 4):", complex_mask) # Output: Complex mask (a > 1) & (a < 4): [False False True True False False] print("a[complex_mask]:", a[complex_mask]) # Output: a[complex_mask]: [2. 3.]` } ]} /> Advanced indexing dapat dikombinasikan dengan slicing regular untuk operasi yang sangat fleksibel: ## Teknik Lanjutan NumPy menyediakan berbagai teknik slicing yang memungkinkan manipulasi data yang efisien dan fleksibel. Step parameter memungkinkan kamu mengambil elemen dengan interval tertentu, seperti mengambil setiap elemen kedua atau ketiga. Ellipsis (`...`) adalah shorthand untuk slice penuh pada dimensi yang tidak disebutkan. Sangat berguna untuk array dengan dimensi tinggi. ## Boolean Indexing Boolean indexing menggunakan array boolean untuk memfilter elemen berdasarkan kondisi tertentu. True indexes mengambil elemen di target array, sedangkan False mengabaikannya. 2 print("a > 2:", greater_than_2) # Output: a > 2: [False False False True True True] print("a[a > 2]:", a[a > 2]) # Output: a[a > 2]: [3. 4. 5.] # Boolean mask dengan kondisi ganda even_and_greater_than_1 = (a % 2 == 0) & (a > 1) print("(a % 2 == 0) & (a > 1):", even_and_greater_than_1) # Output: (a % 2 == 0) & (a > 1): [False False True False True False] print("a[even_and_greater_than_1]:", a[even_and_greater_than_1]) # Output: a[even_and_greater_than_1]: [2. 4.]` } ]} /> Boolean indexing pada array 2D dapat diterapkan untuk filtering elemen berdasarkan kondisi: 5 print("Mask a > 5:") print(mask) # Output: # [[False False False False] # [False False True True] # [ True True True True]] print("a[mask]:", a[mask]) # Output: a[mask]: [ 6 7 8 9 10 11] # Boolean indexing dengan assignment a[a < 5] = 0 print("Setelah a[a < 5] = 0:") print(a) # Output: # [[ 0 0 0 0] # [ 0 0 6 7] # [ 8 9 10 11]]` } ]} /> ## Fancy Indexing Fancy indexing menggunakan array integer untuk mengakses elemen dengan urutan atau pola tertentu. Teknik ini sangat berguna untuk data sampling dan reorganisasi. Fancy indexing pada array 2D memungkinkan seleksi baris dan kolom dengan pola yang kompleks: ## Aplikasi Praktis Indexing dan slicing memiliki banyak aplikasi praktis dalam analisis data dan machine learning. Teknik filtering sangat berguna untuk preprocessing data dalam machine learning dan analisis statistik: = 20) & (temperatures <= 28) normal_temps = temperatures[normal_temp_mask] print("Suhu normal:", normal_temps) # Output: Suhu normal: [22.5 25.1 27.3 24.8] # Filter suhu ekstrem extreme_temp_mask = (temperatures < 20) | (temperatures > 30) extreme_temps = temperatures[extreme_temp_mask] print("Suhu ekstrem:", extreme_temps) # Output: Suhu ekstrem: [19.8 30.2 18.5 31.1] # Mengganti nilai ekstrem dengan nilai rata-rata mean_temp = temperatures[normal_temp_mask].mean() temperatures_cleaned = temperatures.copy() temperatures_cleaned[extreme_temp_mask] = mean_temp print("Data setelah cleaning:", temperatures_cleaned) # Output: Data setelah cleaning: [22.5 25.1 24.925 24.925 24.925 27.3 24.925 24.8 ]` } ]} /> Sampling dan reorganisasi data adalah teknik penting untuk machine learning dan analisis dataset besar: