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

NumPy unique ile farklı değerler ve sayıları nasıl bulunur?

  • 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
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni

Temel kullanım​


NumPy dizisindeki farklı değerleri bulmak için np.unique() kullanılır. Yalnızca her değeri bir kez görmek istiyorsanız np.unique(dizi), her değerin kaç kez geçtiğini de öğrenmek istiyorsanız np.unique(dizi, return_counts=True) çağrısını yapın. Böylece benzersiz değerleri ve bunların tekrar sayılarını eşleştirebilirsiniz.

Python:
import numpy as np

değerler = np.array([3, 1, 3, 2, 1, 3, 4])

farklı_değerler, sayılar = np.unique(
    değerler,
    return_counts=True
)

print(farklı_değerler)
print(sayılar)

Bu örneğin çıktısı şöyledir:

Kod:
[1 2 3 4]
[2 1 3 1]

İlk satırdaki 1, 2, 3, 4 farklı değerleri, ikinci satırdaki sayılar ise bunların dizide kaç kez bulunduğunu gösterir. Buna göre 1 iki, 2 bir, 3 üç ve 4 bir kez geçer. Çıktıdaki iki dizi aynı sırayla eşleştirilir.

Farklı değerleri yalnızca listelemek​


Tek bir dizi almak için return_counts belirtmeden kullanın:

Python:
import numpy as np

dizi = np.array([5, 2, 5, 8, 2, 9])
farklı_değerler = np.unique(dizi)

print(farklı_değerler)

Çıktı:

Kod:
[2 5 8 9]

np.unique() sonucu varsayılan olarak sıralıdır. Bu nedenle sonuç, değerlerin dizide ilk göründüğü sırayı değil, sıralanmış benzersiz değerleri gösterir. İlk görülme sırasını korumak istiyorsanız np.unique() sonucunu doğrudan bu amaçla kullanmayın; bunun yerine sıralama indisini ayrıca hesaplayan bir yaklaşım gerekir.

Değerleri ve tekrar sayılarını birlikte almak​


return_counts=True kullanıldığında işlev iki sonuç döndürür. Bunları tek değişkene atamak yerine iki ayrı değişkene ayırın:

Python:
import numpy as np

dizi = np.array(["elma", "armut", "elma", "kiraz", "armut", "elma"])

meyveler, sayılar = np.unique(dizi, return_counts=True)

for meyve, sayı in zip(meyveler, sayılar):
    print(f"{meyve}: {sayı}")

Beklenen çıktı:

Kod:
armut: 2
elma: 3
kiraz: 1

Burada zip(), benzersiz değerlerle karşılık gelen sayıları aynı döngüde kullanır. Sonuçların sıralı gelmesi nedeniyle armut, elma değerinden önce yazdırılır; bu, dizide ilk önce armut görüldüğü anlamına gelmez.

Diğer dönüş seçenekleri ne işe yarar?​


np.unique(), tekrar sayılarına ek olarak bir değerin ilk konumunu ve değerlerden özgün diziyi yeniden oluşturmak için kullanılabilecek ters indeksleri de döndürebilir.
SeçenekDönen bilgiNe zaman kullanılır?
return_counts=TrueHer farklı değerin tekrar sayısıFrekans veya dağılım hesaplamak için
return_index=TrueHer farklı değerin ilk görüldüğü indisİlk konumları bulmak için
return_inverse=TrueÖzgün diziyi yeniden kurmaya yarayan indislerKategorik değerleri eşleme veya geri oluşturma için
Birden fazla seçenek kullanırsanız dönen sonuçların sırası, istediğiniz seçeneklerin sırasına göre değil, NumPy işlevinin tanımlı dönüş sırasına göre gelir: önce benzersiz değerler, ardından istenen ek diziler bulunur. Bu nedenle sonuçları doğru sayıda değişkene ayırmanız gerekir.

Örneğin ilk görülen konumları ve tekrar sayılarını almak için:

Python:
import numpy as np

dizi = np.array([30, 10, 30, 20, 10])

farklı, ilk_konum, sayılar = np.unique(
    dizi,
    return_index=True,
    return_counts=True
)

print(farklı)
print(ilk_konum)
print(sayılar)

Çıktı:

Kod:
[10 20 30]
[1 3 0]
[2 1 2]

10 değeri farklı değerler dizisinde ilk sırada yer alır ve özgün dizideki ilk konumu 1 olur. 30 ise özgün dizide 0 indisinde bulunduğu için ortadaki çıktı satırında (ilk_konum) bu değere karşılık gelen indis 0 olarak görünür.

İki boyutlu dizilerde kullanım​


İki boyutlu bir dizide np.unique(dizi) varsayılan olarak tüm elemanları tek boyutlu bir dizide değerlendirir:

Python:
import numpy as np

dizi = np.array([
    [1, 2, 1],
    [3, 2, 4]
])

print(np.unique(dizi))

Çıktı:

Kod:
[1 2 3 4]

Satırları veya sütunları ayrı ayrı benzersiz birimler olarak değerlendirmek istiyorsanız axis parametresini kullanın. Örneğin satırları karşılaştırmak için:

Python:
import numpy as np

dizi = np.array([
    [1, 2],
    [3, 4],
    [1, 2]
])

farklı_satırlar = np.unique(dizi, axis=0)
print(farklı_satırlar)

Çıktı:

Kod:
[[1 2]
 [3 4]]

Burada iki ayrı [1, 2] satırı tek satır olarak bırakılır. axis=0, satırları karşılaştırır; sütunları karşılaştırmak istiyorsanız dizinin yapısına uygun olarak axis=1 kullanılır.

Sonucu yorumlarken dikkat edilmesi gerekenler​

  • Farklı değer sayısı: Kaç benzersiz değer olduğunu bulmak için len(np.unique(dizi)) veya sayısal dizilerde np.unique(dizi).size kullanabilirsiniz.
  • En sık değer: return_counts=True sonucundaki en büyük sayının konumunu bulup aynı konumdaki farklı değeri seçin. Yalnızca farklı değerleri almak, hangi değerin en sık olduğunu göstermez.
  • Sıra bilgisi: np.unique() sonucu varsayılan olarak sıralandığından, bu sonuç özgün dizinin ilk görülme sırasını temsil etmez.
  • Eksik değerler: Kayan noktalı dizilerde NaN değerleriyle çalışırken eşitlik ve benzersizlik davranışını ayrıca kontrol edin; eksik değerleri normal sayısal değerler gibi yorumlamayın.
  • Veri türleri: Karışık veya karşılaştırılması sorunlu veri türleri kullanmak hata verebilir. Dizinin dtype değerini ve elemanların beklenen türde olup olmadığını kontrol edin.
Örneğin en sık değeri bulmak için:

Python:
import numpy as np

dizi = np.array([4, 2, 4, 1, 4, 2])

farklı, sayılar = np.unique(dizi, return_counts=True)
en_sık_indis = np.argmax(sayılar)

en_sık_değer = farklı[en_sık_indis]
en_sık_sayı = sayılar[en_sık_indis]

print(en_sık_değer)
print(en_sık_sayı)

Çıktı 4 ve 3 olur. Bu, 4 değerinin üç kez geçtiğini gösterir; ancak eşit sayıda tekrar eden birden fazla değer varsa np.argmax() yalnızca ilk en yüksek konumun indisini döndürür. Böyle bir durumda tüm eşit maksimumları ayrıca seçmeniz gerekir.
 
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.
Geri
Üst