Garfield
YZF Admin
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çenek | Dönen bilgi | Ne zaman kullanılır? |
|---|---|---|
| return_counts=True | Her farklı değerin tekrar sayısı | Frekans veya dağılım hesaplamak için |
| return_index=True | Her farklı değerin ilk görüldüğü indis | İlk konumları bulmak için |
| return_inverse=True | Özgün diziyi yeniden kurmaya yarayan indisler | Kategorik değerleri eşleme veya geri oluşturma için |
Ö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 dizilerdenp.unique(dizi).sizekullanabilirsiniz. - En sık değer:
return_counts=Truesonucundaki 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
NaNdeğ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
dtypedeğerini ve elemanların beklenen türde olup olmadığını kontrol edin.
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: