Python Programming

Python Dizilerinde Öğe Sayımını Etkin Bir Şekilde Yapmak

Spread the love

Python dizilerinde öğelerin oluşumlarını verimli bir şekilde saymak, çeşitli etkili çözümlere sahip temel bir görevdir. Bu makale, iki popüler yaklaşımı ele almaktadır: collections modülünden yararlanma ve NumPy kütüphanesini kullanma. Her yöntem, özel ihtiyaçlarınıza ve verilerinizin özelliklerine bağlı olarak farklı avantajlar sunar.

İçerik Tablosu

collections Modülünü Kullanma

collections modülü, herhangi bir yineleyici içindeki öğelerin sıklığını saymak için güçlü bir araç olan Counter nesnesini sağlar. Bu yaklaşım, çeşitli boyutlarda ve veri tiplerinde diziler için oldukça çok yönlü, okunabilir ve verimlidir.


from collections import Counter

my_array = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 'a', 'a', 'b']

# Counter kullanarak oluşumları say
occurrences = Counter(my_array)

# Belirli bir öğenin sayısına erişim
item_to_count = 3
count = occurrences[item_to_count]
print(f"{item_to_count} öğesinin oluşum sayısı: {count}")  # Çıktı: 3

# Belirli bir öğenin (string) sayısına erişim
item_to_count = 'a'
count = occurrences[item_to_count]
print(f"{item_to_count} öğesinin oluşum sayısı: {count}")  # Çıktı: 2

# Tüm öğelerin sayılarını yazdır
print(f"Tüm öğe sayıları: {occurrences}") 
# Çıktı: Counter({4: 4, 3: 3, 2: 2, 1: 1, 'a': 2, 'b': 1})

Bu kod, Counter‘ın basitliğini ve esnekliğini göstermektedir. Hem sayısal hem de dize veri tiplerini sorunsuz bir şekilde işler.

NumPy Kütüphanesini Kullanma

NumPy, sayısal hesaplamalar için optimize edilmiştir ve verimli dizi manipülasyon fonksiyonları sağlar. Büyük sayısal diziler için NumPy, önemli performans avantajları sunar.


import numpy as np

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

item_to_count = 3

# Boole indekslemesiyle NumPy'nin count_nonzero fonksiyonunu kullan
count = np.count_nonzero(my_array == item_to_count)
print(f"{item_to_count} öğesinin oluşum sayısı: {count}")  # Çıktı: 3

# Tüm oluşumları say
unique, counts = np.unique(my_array, return_counts=True)
print(dict(zip(unique, counts))) # Çıktı: {1: 1, 2: 2, 3: 3, 4: 4}

Boole indekslemesiyle birleştirilen NumPy’nin count_nonzero fonksiyonu, sayısal diziler için özlü ve yüksek performanslı bir çözüm sağlar. np.unique, tüm benzersiz öğelerin sayılarını almak için kullanışlı bir yol sunar.

Doğru Yöntemi Seçme

En uygun yaklaşım, özel bağlamınıza bağlıdır:

  • collections.Counter: Daha küçük diziler, karma veri tiplerine sahip diziler veya birden çok öğenin oluşumlarını verimli ve okunabilir bir kodla saymanız gerektiğinde en iyisidir.
  • NumPy: Performansın kritik olduğu büyük sayısal diziler için idealdir. NumPy’nin vektörize işlemleri önemli hız avantajları sunar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir