Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan
Akses dan ubah elemen array dengan teknik pengindeksan lanjutan.
Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Pengindeksan Dasar
Akses elemen dengan indeks bilangan bulat berbasis nol. Indeks negatif dihitung dari akhir. Larik multidimensi menggunakan indeks yang dipisahkan koma.
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[0, 2]) # 3
print(arr[-1, -1]) # 9
print(arr[1]) # [4 5 6]Pengirisan
Sintaks pengirisan start:stop:step mengembalikan view. Pengirisan diterapkan secara independen pada setiap dimensi.
import numpy as np
m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
# [9 10]]
print(m[::2, ::2]) # every other row and columnPengindeksan Boolean (Masking)
Berikan larik Boolean dengan bentuk yang sama untuk memilih elemen yang bernilai True.
import numpy as np
arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask) # [ True False True False True]
print(arr[mask]) # [1 3 5]
arr[~mask] = 0 # set negatives to 0
print(arr) # [1 0 3 0 5]Pengindeksan Lanjutan dengan Larik Bilangan Bulat
Berikan larik berisi indeks bilangan bulat untuk memilih beberapa elemen tertentu.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx]) # [10 30 50]
# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]]) # [m[0,0], m[2,2]] = [0, 8]np.where untuk Pemilihan Berdasarkan Indeks
np.where(condition) (dengan satu argumen) mengembalikan indeks saat condition bernilai True.
import numpy as np
arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx) # [0 2 4]
print(arr[idx]) # [5 8 9]np.take dan np.put
np.take(arr, indices) memilih elemen (mendukung pengindeksan datar). np.put(arr, indices, values) menyisipkan nilai.
import numpy as np
arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3])) # [20 40]
np.put(arr, [0, 2], [99, 88])
print(arr) # [99 20 88 40]np.nonzero
np.nonzero(arr) mengembalikan tuple berisi larik—satu larik untuk setiap dimensi—yang berisi indeks elemen tidak nol.
import numpy as np
arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols) # [0 1 1] [1 0 2]Pengindeksan dengan Elipsis
... (Ellipsis) diperluas menjadi sebanyak mungkin : yang diperlukan untuk mencakup dimensi yang tersisa.
import numpy as np
arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape) # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape) # (2, 3, 4) — last dim=0np.ix_ untuk Pengindeksan Luar
np.ix_ membangun mesh terbuka dari beberapa urutan 1-D untuk pengindeksan lanjutan bergaya hasil kali luar.
import numpy as np
m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1 3]
# [11 13]
# [21 23]]Menetapkan ke Indeks Lanjutan
Anda dapat menetapkan nilai ke pilihan yang diindeks secara lanjutan secara langsung.
import numpy as np
arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr) # [ 0. 10. 0. 20. 0.]
# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr) # [99. 10. 99. 20. 99.]Perbedaan: View vs Salinan
Pengindeksan dasar/pengirisan → view (perubahan akan mengubah larik asli). Pengindeksan lanjutan/Boolean → salinan (perubahan TIDAK mengubah larik asli).
import numpy as np
arr = np.arange(5)
view = arr[1:4] # view
view[0] = 99
print(arr) # [0 99 2 3 4]
copy = arr[[1,2,3]] # fancy → copy
copy[0] = 0
print(arr) # unchangedPemeriksaan Cepat
Apakah pengindeksan Boolean/lanjutan mengembalikan view atau salinan?
Ringkasan
Gunakan [row, col] untuk elemen tunggal, start:stop:step untuk pengirisan (view), larik Boolean untuk masking (salinan), dan larik bilangan bulat untuk pengindeksan lanjutan (salinan). Gunakan np.where untuk mendapatkan indeks dan np.ix_ untuk mesh luar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan” gratis?
Ya — teks lengkap “Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan”?
Akses dan ubah elemen array dengan teknik pengindeksan lanjutan. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Array NumPy dan dtype
- Operasi Array dan Broadcasting
- Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan
- Aljabar Linear dengan NumPy