logo

numpy.argsort() v Pythonu

Modul NumPy ponuja funkcijo argsort(), ki vrne indekse, ki bi razvrstili matriko.

Modul NumPy nudi funkcijo za izvajanje posrednega razvrščanja skupaj z dano osjo s pomočjo algoritma, določenega s ključno besedo. Ta funkcija vrne matriko indeksov enake oblike kot 'a', ki bi razvrstila matriko.

Sintaksa

 numpy.argsort(a, axis=-1, kind=None, order=None) 

Parametri

To so naslednji parametri v funkciji numpy.argsort():

razdelitev nizov c++

a: array_like

Ta parameter določa izvorno matriko, ki jo želimo razvrstiti.

os: int ali nič (neobvezno)

Ta parameter določa os, vzdolž katere se izvaja razvrščanje. Privzeto je os -1. Če ta parameter nastavimo na Brez, se uporabi sploščena matrika.

vrsta: {'quicksort','mergesort','heapsort','stable'}(izbirno)

Ta parameter določa algoritem razvrščanja. Privzeto je algoritem hitro razvrščanje . Oboje mergesort in stabilno uporabljajo časovno sortiranje pod odejo. Dejanska izvedba se bo razlikovala glede na vrsto podatkov. The mergesort možnost je ohranjena zaradi združljivosti nazaj.

cast int v niz java

vrstni red: str ali seznam str (neobvezno)

Če je 'a' matrika z definiranimi polji, ta argument določa, katera polja naj se primerjajo prva, druga itd. Posamezno polje je mogoče podati kot niz in ni treba podati vseh polj. Toda nedoločena polja bodo še vedno uporabljena v vrstnem redu, v katerem se pojavijo v vrsti dtype, za prekinitev vezi.

Vrne: index_array: ndarray, int

Ta funkcija vrne matriko indeksov, ki razvrščajo 'a' skupaj z navedeno osjo. Če je 'a' 1-D, a[index_array] vrne razvrščen 'a'. Na splošno, np.take_along_axis(arr1, index_array, axis=axis) vedno vrne razvrščeni 'a', ne glede na dimenzijo.

1. primer: np.argsort()

 import numpy as np a=np.array([456,11,63]) a b=np.argsort(a) b 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • Ustvarili smo matriko 'a' s funkcijo np.array().
  • Razglasili smo spremenljivko 'b' in dodelili vrnjeno vrednost funkcije np.argsort().
  • V funkciji smo posredovali niz 'a'.
  • Nazadnje smo poskušali natisniti vrednost b.

V izhodu je bila prikazana ndarray, ki vsebuje indekse (označujejo položaj elementa za razvrščeno matriko) in dtype.

Izhod:

 array([456, 11, 63]) array([1, 2, 0], dtype=int64) 

2. primer: za 2-D matriko (razvrščanje vzdolž prve osi (navzdol))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices 

Izhod:

velikost pythona
 array([[0, 1], [1, 0]], dtype=int64) 

3. primer: za 2-D polje (alternativa osi = 0)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices np.take_along_axis(a, indices, axis=0) 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.array() smo ustvarili 2-D matriko 'a'.
  • Razglasili smo indekse spremenljivk in dodelili vrnjeno vrednost funkcije np.argsort().
  • 2-D niz 'a' in os smo posredovali kot 0.
  • Nato smo uporabili funkcijo take_along_axis() in posredovali izvorno matriko, indekse in os.
  • Ta funkcija je vrnila razvrščeno 2-D matriko.

V izhodu je bila prikazana 2-D matrika z razvrščenimi elementi.

Izhod:

 array([[0, 2], [3, 5]]) 

Primer 4: Za 2-D matriko (razvrščanje vzdolž zadnje osi (čez))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices 

Izhod:

 array([[0, 1], [1, 0]], dtype=int64) 

Primer 5: Za 2-D niz (alternativa osi = 1)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices np.take_along_axis(a, indices, axis=1) 

Izhod:

 array([[0, 2], [3, 5]]) 

Primer 6: Za niz N-D

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.unravel_index(np.argsort(a, axis=None), a.shape) indices a[indices] # same as np.sort(a, axis=None) 

Izhod:

prečrtana markdown
 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.array() smo ustvarili 2-D matriko 'a'.
  • Razglasili smo spremenljivko 'indeksi' in dodelili vrnjeno vrednost funkcije np.unravel_index().
  • Posredovali smo funkcijo np.argsort() in obliko matrike 'a'.
  • V funkciji argsort() smo posredovali 2-D polje 'a' in os kot 1.
  • Nato smo poskušali natisniti vrednost indeksov in a[indeksi].

V izhodu je bila prikazana matrika N-D z razvrščenimi elementi.

Primer 7: Razvrščanje s ključi

 import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="(&apos;x&apos;,&apos;y&apos;))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) array([0, 1], dtype="int64)" array([1, 0], < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created a 2-D array &apos;a&apos; using np.array() function with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')].< li> <li>We have declared the variables &apos;b&apos; and &apos;c&apos; and assigned the returned value of np.argsort() function.</li> <li>We have passed the array &apos;a&apos; and order as an argument in the function.</li> <li>Lastly, we tried to print the value of &apos;b&apos; and &apos;c&apos;.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>