Masking Boolean dan Pengindeksan Lanjutan
Saring array dengan kondisi boolean dan pilih elemen arbitrer menggunakan array indeks bilangan bulat
Masking Boolean dan Pengindeksan Lanjutan adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Array Boolean sebagai Masker
Masker boolean adalah array berisi nilai True/False. Gunakan masker tersebut sebagai indeks dan Anda hanya akan mempertahankan elemen yang ditandai True—alat utama Anda untuk memfilter.
import numpy as np
a = np.array([5, 3, 8, 1, 9, 2, 7])
mask = a > 4
print(mask) # [ True False True False True False True]
print(a[mask]) # [5 8 9 7]Kondisi Boolean Gabungan
Buat filter gabungan dengan & (dan), | (atau), dan ~ (bukan). Selalu apit setiap kondisi dengan tanda kurung, atau urutan prioritas operator dapat menimbulkan masalah.
import numpy as np
a = np.array([3, 7, 2, 9, 1, 6, 4, 8])
# Elements between 4 and 8 inclusive
result = a[(a >= 4) & (a <= 8)]
print(result) # [7 6 4 8]
# Elements less than 3 or greater than 7
result2 = a[(a < 3) | (a > 7)]
print(result2) # [2 9 1 8]Mengubah Nilai dengan Pengindeksan Boolean
Anda dapat langsung menetapkan nilai ke pilihan boolean, sehingga hanya elemen yang cocok yang diubah pada tempatnya. Ini adalah cara tercepat untuk membatasi pencilan atau mengisi nilai yang hilang.
import numpy as np
a = np.array([5, -3, 8, -1, 2, -7])
a[a < 0] = 0 # zero out negatives in-place
print(a) # [5 0 8 0 2 0]
# Cap values above 6
a[a > 6] = 6
print(a) # [5 0 6 0 2 0]Masking Boolean pada Array 2-D
Masker boolean pada array 2-D selalu mengembalikan hasil 1-D yang diratakan. Untuk memilih seluruh baris, buat masker 1-D dari satu kolom lalu lakukan pengindeksan sepanjang axis 0.
import numpy as np
m = np.array([[1, 5], [3, 2], [8, 4], [6, 7]])
# Select rows where first column > 4
mask = m[:, 0] > 4
print(mask) # [False False True True]
print(m[mask]) # [[8 4] [6 7]]np.where dengan Masker
np.where(condition, x, y) mempertahankan bentuk array: fungsi ini memilih x saat kondisi terpenuhi dan y pada kondisi lainnya. Sangat cocok untuk menukar nilai tanpa meratakan array.
import numpy as np
a = np.array([3, -1, 5, -2, 4])
result = np.where(a >= 0, a, 0) # keep positives, replace negatives
print(result) # [3 0 5 0 4]
# Recode: above-average -> 'high', else -> 'low'
labels = np.where(a >= a.mean(), 'high', 'low')
print(labels) # ['high' 'low' 'high' 'low' 'high']Dasar-Dasar Pengindeksan Lanjutan
Pengindeksan lanjutan berarti memberikan array berisi indeks bilangan bulat untuk mengambil elemen tertentu—dalam urutan apa pun dan dengan pengulangan. Cara ini selalu mengembalikan salinan.
import numpy as np
a = np.array([10, 20, 30, 40, 50])
idx = np.array([4, 1, 1, 3])
print(a[idx]) # [50 20 20 40]
# 2D index shape -> 2D output
idx2d = np.array([[0, 2], [4, 1]])
print(a[idx2d]) # [[10 30] [50 20]]Pengindeksan Lanjutan pada Array 2-D
Pada array 2-D, pasangan array indeks memilih titik-titik yang tersebar: m[rows, cols] mengambil elemen pada setiap pasangan (baris, kolom), bukan seluruh submatriks.
import numpy as np
m = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Select elements at (0,2), (1,0), (2,1)
rows = [0, 1, 2]
cols = [2, 0, 1]
print(m[rows, cols]) # [3 4 8]np.ix_ untuk Pemilihan Kisi Baris-Kolom
np.ix_ memilih submatriks pada setiap kombinasi baris dan kolom yang Anda cantumkan—berguna saat Anda ingin memilih banyak baris DAN banyak kolom, bukan hanya pasangan.
import numpy as np
m = np.arange(16).reshape(4, 4)
print(m)
# Select rows 0,2 and columns 1,3
ix = np.ix_([0, 2], [1, 3])
print(m[ix])
# [[ 1 3]
# [ 9 11]]np.nonzero() dan np.argwhere()
np.nonzero mengembalikan indeks elemen yang bukan nol (atau True) sebagai tuple untuk setiap sumbu. np.argwhere memberikan informasi yang sama dalam bentuk baris-baris yang mudah dibaca.
import numpy as np
a = np.array([0, 3, 0, 5, 0, 7])
print(np.nonzero(a)) # (array([1, 3, 5]),)
print(np.argwhere(a > 0)) # [[1] [3] [5]]Menggabungkan Pengindeksan Boolean dan Lanjutan
Gabungkan keduanya: gunakan masker boolean untuk memfilter baris, lalu gunakan pengindeksan lanjutan untuk mengurutkan ulang kolom. Bersama-sama, keduanya memfilter dan menyusun ulang data dalam satu langkah yang rapi.
import numpy as np
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
scores = np.array([0.9, 0.3, 0.8])
# Keep high-scoring rows, reorder columns to [2, 0, 1]
high = data[scores > 0.5]
reordered = high[:, [2, 0, 1]]
print(reordered)Kinerja: Pengindeksan Boolean vs Lanjutan
Pengindeksan boolean dan lanjutan sama-sama mengembalikan salinan. Untuk pemfilteran, masker boolean biasanya paling mudah dibaca dan cukup cepat—pilihan bawaan yang sangat baik.
import numpy as np
a = np.random.rand(1_000_000)
# Boolean mask -- readable and fast
result = a[a > 0.5]
print('filtered size:', result.size) # ~500000
# Equivalent with np.where + fancy index
idx = np.where(a > 0.5)[0]
result2 = a[idx]
print('same result:', np.array_equal(result, result2))Pemeriksaan Cepat
Uji pemahaman Anda tentang masking boolean dan pengindeksan lanjutan dari pelajaran ini.
Ringkasan Pelajaran
Kerja bagus! Masker boolean memfilter dan menyalin, np.where mempertahankan bentuk array, dan pengindeksan lanjutan mengambil elemen apa pun yang Anda tentukan. Berikutnya: Pandas Series!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Masking Boolean dan Pengindeksan Lanjutan” gratis?
Ya — teks lengkap “Masking Boolean 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 Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Masking Boolean dan Pengindeksan Lanjutan”?
Saring array dengan kondisi boolean dan pilih elemen arbitrer menggunakan array indeks bilangan bulat Kamu berlatih Pandas & NumPy 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 Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy 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 4 dari 4.
Berapa lama pelajaran “Masking Boolean 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 Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy 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
- Fungsi Universal (ufunc)
- Fungsi Agregasi
- Aturan Broadcasting
- Masking Boolean dan Pengindeksan Lanjutan