Boole Maskeleme ve Gelişmiş Dizinleme
Boole koşullarıyla dizileri filtreleyin ve tamsayı dizin dizilerini kullanarak rastgele öğeleri seçin.
Boole Maskeleme ve Gelişmiş Dizinleme, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Maske Olarak Mantıksal Diziler
Bir mantıksal maske, True/False değerlerinden oluşan bir dizidir. Bunu dizin olarak kullandığınızda yalnızca True olarak işaretlenen öğeleri alırsınız — bu, temel filtreleme aracınızdır.
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]Birleşik Mantıksal Koşullar
& (ve), | (veya) ve ~ (değil) ile birleşik filtreler oluşturun. Öncelik sırasının sorun çıkarmaması için her koşulu daima parantez içine alın.
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]Mantıksal Dizinlemeyle Değerleri Değiştirme
Bir mantıksal seçime doğrudan değer atayarak yalnızca eşleşen öğeleri yerinde değiştirebilirsiniz. Bu, aykırı değerleri sınırlamanın veya eksik değerleri doldurmanın en hızlı yoludur.
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]2 Boyutlu Dizilerde Mantıksal Maskeleme
2 boyutlu bir dizi üzerindeki mantıksal maske her zaman düzleştirilmiş bir 1 boyutlu sonuç döndürür. Tüm satırları seçmek için bir sütundan 1 boyutlu maske oluşturun ve 0 ekseni boyunca dizinleyin.
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]]Maskelerle np.where
np.where(condition, x, y), dizinin şeklini korur: koşulun sağlandığı yerlerde x'i, diğer yerlerde y'yi seçer. Düzleştirme yapmadan değerleri değiştirmek için idealdir.
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']Gelişmiş Dizinlemenin Temelleri
Gelişmiş dizinleme, belirli öğeleri almak için tamsayı dizinlerinden oluşan bir dizi vermek anlamına gelir — herhangi bir sırada ve tekrarlı olarak. Her zaman bir kopya döndürür.
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]]2 Boyutlu Dizilerde Gelişmiş Dizinleme
2 boyutlu bir dizide eşleştirilmiş dizin dizileri dağınık noktaları seçer: m[rows, cols], bir alt matrisin tamamını değil, her (satır, sütun) çiftindeki öğeyi alır.
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]Satır-Sütun Izgarası Seçimi için np.ix_
np.ix_, listelediğiniz satır ve sütunların her birleşimindeki bir alt matrisi seçer — yalnızca çiftleri değil, çok sayıda satır VE çok sayıda sütun istediğinizde kullanışlıdır.
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() ve np.argwhere()
np.nonzero, sıfır olmayan (veya True olan) öğelerin dizinlerini her eksen için bir demet olarak döndürür. np.argwhere aynı bilgiyi okunması kolay satırlar halinde üst üste yerleştirir.
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]]Mantıksal ve Gelişmiş Dizinlemeyi Birleştirme
İkisini birleştirin: satırları filtrelemek için mantıksal maske, sütunları yeniden sıralamak için gelişmiş dizinleme kullanın. Birlikte, verileri tek ve düzenli bir adımda filtreleyip yeniden düzenlerler.
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)Performans: Mantıksal ve Gelişmiş Dizinleme
Hem mantıksal hem de gelişmiş dizinleme kopya döndürür. Filtreleme için mantıksal maske genellikle en okunabilir ve yeterince hızlı seçenektir — harika bir varsayılan tercihtir.
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))Hızlı Kontrol
Bu derste öğrendiğiniz mantıksal maskeleme ve gelişmiş dizinleme konularını anlayıp anlamadığınızı test edin.
Ders Özeti
Çok iyi! Mantıksal maskeler filtreler ve kopyalar, np.where dizinin şeklini korur ve gelişmiş dizinleme adını verdiğiniz tüm öğeleri alır. Sırada: Pandas Series!
Sıkça Sorulan Sorular
“Boole Maskeleme ve Gelişmiş Dizinleme” dersi ücretsiz mi?
Evet — “Boole Maskeleme ve Gelişmiş Dizinleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Boole Maskeleme ve Gelişmiş Dizinleme” dersinde ne öğreneceğim?
Boole koşullarıyla dizileri filtreleyin ve tamsayı dizin dizilerini kullanarak rastgele öğeleri seçin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Boole Maskeleme ve Gelişmiş Dizinleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Evrensel İşlevler (ufunc’lar)
- Toplama İşlevleri
- Yayma Kuralları
- Boole Maskeleme ve Gelişmiş Dizinleme