SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • Blendtec

    Blendtec

    30 EKİM 2006
  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007