2 AĞUSTOS 2011, Salı
Nasıl numpy bir dizideki N maksimum değer endeksleri almak için?
Numpy np.argmax
) Bir dizinin en büyük değer Endeksi almak için bir yol öneriyor.
Benzer bir şey istiyorum, ama N maksimum değerleri dizinleri dönüyor.
Eğer bir dizi varsa örneğin, [1, 3, 2, 4, 5]
function(array, n=3)
[4, 3, 1]
dönecekti.
Teşekkür ederim :)
CEVAP
19 Mayıs 2014, PAZARTESİ
NumPy daha yeni sürümleri (1.8 ve üstü) bu iş için bir fonksiyon argpartition
denir. Dört büyük element endeksleri almak için
>>> a
array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])
>>> ind = np.argpartition(a, -4)[-4:]
>>> ind
array([1, 5, 8, 0])
>>> a[ind]
array([4, 9, 6, 9])
argsort
, aksine bu fonksiyon da en kötü durumda, doğrusal zamanda çalışır, ama geri endeksleri değerlendirme sonucu görülebilir a[ind]
olarak sıralanır değil. Eğer çok ihtiyacınız varsa, daha sonra bunları Sırala:
>>> ind[np.argsort(a[ind])]
array([1, 8, 5, 0])
Almak için üstkbu şekilde sıralanmış sırayla elemanları O alırnklgk) zaman.
Bunu Paylaş:
Nasıl MySQL iki değer max almak için?...
Bir sütun her farklı değer sayısını al...
Nasıl Python sıralanmış bir dizi endek...
Nasıl python sözlükte rastgele bir değ...
Nasıl Python ile şimdiki zaman almak i...