logo

numpy.argsort() u Pythonu

NumPy modul pruža funkciju argsort(), vraća indekse koji bi sortirali niz.

Modul NumPy pruža funkciju za izvođenje neizravnog sortiranja uz zadanu os uz pomoć algoritma određenog ključnom riječi. Ova funkcija vraća niz indeksa istog oblika kao 'a', koji bi sortirao niz.

Sintaksa

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

Parametri

Ovo su sljedeći parametri u funkciji numpy.argsort():

četvrtina u poslu

a: sličan_nizu

Ovaj parametar definira izvorni niz koji želimo sortirati.

os: int ili Ništa (izborno)

Ovaj parametar definira os duž koje se vrši sortiranje. Prema zadanim postavkama, os je -1. Ako ovaj parametar postavimo na Ništa, koristi se spljošteni niz.

diskretna matematička negacija

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

Ovaj parametar definira algoritam sortiranja. Prema zadanim postavkama, algoritam je brzo sortiranje . Oba sortiranje spajanjem i stabilan koriste vrijeme sortiranja ispod pokrivača. Stvarna implementacija ovisit će o vrsti podataka. The sortiranje spajanjem opcija je zadržana radi kompatibilnosti s prethodnim verzijama.

poredak: str ili popis str (opcionalno)

Ako je 'a' niz s definiranim poljima, ovaj argument navodi koja polja treba usporediti prvo, drugo itd. Pojedinačno polje može se navesti kao niz, a ne moraju biti navedena sva polja. Ali neodređena polja će se i dalje koristiti, redoslijedom kojim se pojavljuju u dtype, za prekid veza.

Vraća: index_array: ndarray, int

Ova funkcija vraća niz indeksa koji sortiraju 'a' zajedno s navedenom osi. Ako je 'a' 1-D, a[index_array] daje sortirano 'a'. Općenitije, np.take_along_axis(arr1, index_array, axis=axis) uvijek daje sortirano 'a', bez obzira na dimenzionalnost.

Primjer 1: np.argsort()

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

U gornjem kodu

množenje matrice u c
  • Uvezli smo numpy s alias imenom np.
  • Stvorili smo niz 'a' pomoću funkcije np.array().
  • Deklarirali smo varijablu 'b' i dodijelili vraćenu vrijednost funkcije np.argsort().
  • Proslijedili smo niz 'a' u funkciji.
  • Na kraju, pokušali smo ispisati vrijednost b.

U izlazu je prikazana ndarray koja sadrži indekse (označava položaj elementa za sortirani niz) i dtype.

Izlaz:

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

Primjer 2: Za 2-D niz (sortira duž prve osi (dolje))

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

Izlaz:

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

Primjer 3: Za 2-D niz (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) 

U gornjem kodu

  • Uvezli smo numpy s alias imenom np.
  • Stvorili smo 2-D niz 'a' pomoću funkcije np.array().
  • Deklarirali smo indekse varijabli i dodijelili vraćenu vrijednost funkcije np.argsort().
  • Proslijedili smo 2-D polje 'a' i os kao 0.
  • Zatim smo upotrijebili funkciju take_along_axis() i proslijedili izvorni niz, indekse i os.
  • Ova je funkcija vratila sortirano 2-D polje.

U izlazu je prikazan 2-D niz s sortiranim elementima.

Izlaz:

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

Primjer 4: Za 2-D niz (sortira duž zadnje osi (poprijeko))

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

Izlaz:

razlika između lava i tigra
 array([[0, 1], [1, 0]], dtype=int64) 

Primjer 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) 

Izlaz:

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

Primjer 6: Za N-D niz

 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) 

Izlaz:

 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

U gornjem kodu

  • Uvezli smo numpy s alias imenom np.
  • Stvorili smo 2-D niz 'a' pomoću funkcije np.array().
  • Deklarirali smo varijablu 'indeksi' i dodijelili vraćenu vrijednost funkcije np.unravel_index().
  • Proslijedili smo funkciju np.argsort() i oblik niza 'a'.
  • Proslijedili smo 2-D polje 'a' i os kao 1 u funkciji argsort().
  • Zatim smo pokušali ispisati vrijednost indeksa i a[indeksa].

U izlazu je prikazan N-D niz s sortiranim elementima.

Primjer 7: Sortiranje s ključevima

 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'),>