0Pricing
Python Academy · Pelajaran

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 column

Pengindeksan 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=0

np.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)         # unchanged

Pemeriksaan 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

  1. Array NumPy dan dtype
  2. Operasi Array dan Broadcasting
  3. Pengindeksan, Pemotongan, dan Pengindeksan Lanjutan
  4. Aljabar Linear dengan NumPy
← Kembali ke Python Academy