Numpy dizisindeki öğeler nasıl sıralanır (örneklerle)
NumPy dizisindeki öğelerin sıralamasını hesaplamak için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:
Yöntem 1: NumPy’den argsort() işlevini kullanın
import numpy as np
ranks = np. array (my_array). argsort (). argsort ()
Yöntem 2: SciPy’nin Rankdata() işlevini kullanın
from scipy. stats import rankdata
ranks = rankdata(my_array)
Aşağıdaki örnekler, her yöntemin aşağıdaki NumPy dizisiyle pratikte nasıl kullanılacağını gösterir:
import numpy as np
#define array of values
my_array = np. array ([3, 5, 2, 1, 9, 9])
#view array
print (my_array)
[3 5 2 1 9 9]
Örnek 1: NumPy Dizisindeki Öğeleri argsort() Kullanarak Sıralama
Aşağıdaki kod, dizi öğelerini sıralamak için NumPy’nin argsort() işlevinin nasıl kullanılacağını gösterir:
#calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()
#view ranks
print (ranks)
[2 3 1 0 4 5]
Sonuçlar, orijinal dizideki her bir öğenin sıralamasını gösterir; 0 , en düşük değeri temsil eder.
Bu yaklaşımın avantajı herhangi bir ek modül yüklemenize gerek olmamasıdır, ancak dezavantajı argsort() işlevinin bağlantıları işlemek için yalnızca bir yönteme sahip olmasıdır.
Varsayılan olarak argsort() , bağlantıları işlemek için sıralı bir yöntem kullanır; bu, ilk görünen bağlantılı değere otomatik olarak alt sıranın verileceği anlamına gelir.
Örnek 2: NumPy Dizisindeki Öğeleri Rankdata() Kullanarak Sıralayın
Aşağıdaki kod, dizi öğelerini sıralamak için SciPy’nin Rankdata() işlevinin nasıl kullanılacağını gösterir:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array)
#view ranks
print (ranks)
array([3. , 4. , 2. , 1. , 5.5, 5.5])
Sonuçlar, orijinal dizideki her bir öğenin sırasını gösterir; 1 , en küçük değeri temsil eder.
0’ın en küçük değeri temsil etmesini istiyorsanız, her değerden 1 çıkarmanız yeterlidir:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array) - 1
#view ranks
print (ranks)
[2. 3. 1. 0. 4.5 4.5]
Varsayılan olarak Rankdata() işlevi, bağları olan tüm değerlere ortalama sıralamalar atar.
Ancak bağlantıları farklı bir şekilde ele almak için yöntem bağımsız değişkenini kullanabilirsiniz.
Örneğin, aşağıdaki kod sıralı sayının bağlantı yönetimi yöntemi olarak nasıl kullanılacağını gösterir:
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array, method=' ordinal ') - 1
#view ranks
print (ranks)
[2 3 1 0 4 5]
Bu, NumPy’nin argsort() yöntemiyle aynı sonuçları üretir.
Diğer bağlantı yönetimi yöntemleri arasında minimum , maksimum ve yoğun bulunur.
SciPy belgelerinde her yöntem hakkında bilgi edinin.
Ek kaynaklar
Aşağıdaki eğitimler NumPy’de diğer genel görevlerin nasıl gerçekleştirileceğini açıklamaktadır:
NumPy dizisinden yinelenen öğeler nasıl kaldırılır
NumPy kayan nokta dizisini tam sayılara dönüştürme
NumPy matrisini diziye dönüştürme