• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

NumPy where ile koşula bağlı seçim nasıl yapılır?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    numpy where

Garfield

Yönetici
YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
488
Mesajlar
501
AI Seviyesi
Yeni

Temel kullanım​

NumPy’de koşula bağlı seçim yapmak için np.where() kullanılır. Koşulu sağlayan elemanlar için bir değer, sağlamayanlar için başka bir değer üretmek istiyorsanız np.where(koşul, doğru_değer, yanlış_değer) biçimini kullanın. Böylece mevcut diziyi değiştirmeden koşullu sonucu yeni bir dizi olarak elde edersiniz.

Aşağıdaki varsayımsal örnekte 50 ve üzerindeki puanlar "Geçti", diğerleri "Kaldı" olarak etiketlenir:

Python:
import numpy as np

puanlar = np.array([35, 50, 72, 48, 90])
sonuc = np.where(puanlar >= 50, "Geçti", "Kaldı")

print(sonuc)

Çıktı:

Kod:
['Kaldı' 'Geçti' 'Geçti' 'Kaldı' 'Geçti']

Burada puanlar >= 50 ifadesi her eleman için True veya False üretir. True olan konumlarda "Geçti", False olan konumlarda "Kaldı" kullanılır. Bu işlem puanlar dizisini değiştirmez; yalnızca yeni bir sonuç dizisi oluşturur.

Adım adım uygulama​

  1. NumPy’yi içe aktarın. Kodun başına import numpy as np satırını ekleyin; böylece işlevlere np kısaltmasıyla erişebilirsiniz.
  2. Koşul uygulanacak diziyi oluşturun veya yükleyin. Örneğin puanlar = np.array([35, 50, 72, 48, 90]) satırı sayısal bir NumPy dizisi oluşturur.
  3. Koşulu belirleyin. puanlar >= 50 ifadesi, her puanın 50’ye eşit veya büyük olup olmadığını denetler.
  4. Doğru ve yanlış sonuçları verin. np.where(puanlar >= 50, "Geçti", "Kaldı") çağrısı koşula göre metinleri seçer ve sonucu sonuc değişkenine atar.
  5. Sonucu kontrol edin. print(sonuc) çıktısında her konum için beklenen etiket görünmelidir. Eleman sayısı, giriş dizisinin eleman sayısıyla aynı kalır.

Sayılarla koşullu değer değiştirme​

Sonuç olarak metin yerine sayısal değer de üretebilirsiniz. Örneğin negatif sayıları sıfırlamak için:

Python:
sayilar = np.array([-3, 0, 4, -1, 8])
pozitif_veya_sifir = np.where(sayilar < 0, 0, sayilar)

print(pozitif_veya_sifir)

Çıktı:

Kod:
[0 0 4 0 8]

Bu kullanım negatif değerleri sıfırla değiştirir; negatif olmayan değerleri ise oldukları gibi korur. Orijinal sayilar dizisi yine değişmez.

Birden fazla koşulu birleştirme​

Birden fazla koşul kullanırken NumPy’de Python’daki and ve or yerine & ve | operatörlerini kullanın. Her koşulu paranteze almak gerekir:

Python:
sayilar = np.array([5, 12, 18, 25, 31])

sonuc = np.where((sayilar >= 10) & (sayilar <= 25), "Aralıkta", "Dışında")
print(sonuc)

Çıktı:

Kod:
['Dışında' 'Aralıkta' 'Aralıkta' 'Aralıkta' 'Dışında']

& “ve”, | ise “veya” anlamında kullanılır. Parantezleri kaldırmak, işleç önceliği nedeniyle beklenmeyen bir koşul değerlendirmesine yol açabilir.

np.where ile yalnızca konum bulma​

np.where(koşul) biçiminde yalnızca koşulu verirseniz koşulu sağlayan elemanların indisleri, her boyut için bir indis dizisi içeren tuple olarak döner. x ve y değerleri birlikte verilmeli veya ikisi de atlanmalıdır; yalnızca birini vermek hata üretir. Aşağıdaki örnek tek boyutlu bir dizi kullanır:

Python:
sayilar = np.array([5, 12, 18, 25])
indisler = np.where(sayilar > 15)

print(indisler)

Çıktı:

Kod:
(array([2, 3]),)

Sonuçtaki 2 ve 3, 15’ten büyük değerlerin sıfırdan başlayan indisleridir. Değerlerin kendisini almak isterseniz sayilar[sayilar > 15] biçimindeki Boolean seçimi daha doğrudan olabilir.

Aşağıdaki ayrım, hangi biçimi seçmeniz gerektiğini netleştirir:
İhtiyaçUygun kullanımSonuç
Her elemana koşula göre yeni değer vermeknp.where(koşul, doğru, yanlış)Boyut uyumluluğuna (broadcasting) göre oluşan yeni dizi
Koşulu sağlayan indisleri bulmaknp.where(koşul)Koşulu sağlayan konumlar
Koşulu sağlayan değerleri almakdizi[koşul]Yalnız seçilen değerler
Tablodaki yöntemler aynı sonucu üretmez. np.where(koşul, doğru, yanlış) tüm konumlar için seçim yaparken Boolean seçimi yalnızca koşulu sağlayan elemanları döndürür. Bu nedenle koşulu sağlamayan elemanların da sonuçta korunması gerekiyorsa np.where kullanın; yalnızca eşleşen kayıtları süzmek istiyorsanız Boolean seçimi tercih edin.

Yaygın hatalar​

Koşulların birleşiminde and veya or kullanmak NumPy dizilerinde genellikle belirsiz doğruluk hatasına yol açar. Bunun yerine parantezli & ve | kullanın. Ayrıca np.where içindeki doğru ve yanlış sonuçların diziyle uyumlu olması gerekir; tek bir sabit değer her elemana uygulanabilir, ancak farklı uzunluktaki diziler için NumPy’nin boyut uyumluluğu kuralları geçerlidir.

Sonucu doğrularken önce koşulun kendisini yazdırın. Örneğin print(puanlar >= 50) çıktısı beklenen True ve False değerlerini göstermiyorsa sorun np.where çağrısında değil, koşulun veya giriş verisinin kurulma biçimindedir.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst