NumPy - Fungsi Urutkan, Pencarian & Penghitungan

Berbagai fungsi terkait pengurutan tersedia di NumPy. Fungsi pengurutan ini menerapkan algoritme pengurutan yang berbeda, masing-masing dikarakterisasi oleh kecepatan eksekusi, performa kasus terburuk, ruang kerja yang diperlukan, dan stabilitas algoritme. Tabel berikut menunjukkan perbandingan dari tiga algoritma pengurutan.

jenis kecepatan kasus terburuk ruang kerja stabil
'quicksort' 1 O (n ^ 2) 0 tidak
'mergesort' 2 O (n * log (n)) ~ n / 2 Iya
'heapsort' 3 O (n * log (n)) 0 tidak

numpy.sort ()

Fungsi sort () mengembalikan salinan yang diurutkan dari larik input. Ini memiliki parameter berikut -

numpy.sort(a, axis, kind, order)

Dimana,

Sr.No. Parameter & Deskripsi
1

a

Larik untuk diurutkan

2

axis

Sumbu di mana array akan diurutkan. Jika tidak ada, larik akan diratakan, diurutkan pada sumbu terakhir

3

kind

Default-nya adalah quicksort

4

order

Jika larik berisi bidang, urutan bidang yang akan diurutkan

Contoh

import numpy as np  
a = np.array([[3,7],[9,1]]) 

print 'Our array is:' 
print a 
print '\n'

print 'Applying sort() function:' 
print np.sort(a) 
print '\n' 
  
print 'Sort along axis 0:' 
print np.sort(a, axis = 0) 
print '\n'  

# Order parameter in sort function 
dt = np.dtype([('name', 'S10'),('age', int)]) 
a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) 

print 'Our array is:' 
print a 
print '\n'  

print 'Order by name:' 
print np.sort(a, order = 'name')

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[[3 7]
 [9 1]]

Applying sort() function:
[[3 7]
 [1 9]]

Sort along axis 0:
[[3 1]
 [9 7]]

Our array is:
[('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)]

Order by name:
[('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]

numpy.argsort ()

Itu numpy.argsort()fungsi melakukan pengurutan tidak langsung pada larik masukan, sepanjang sumbu yang diberikan dan menggunakan jenis pengurutan tertentu untuk mengembalikan larik indeks data. Array indeks ini digunakan untuk membangun array yang diurutkan.

Contoh

import numpy as np 
x = np.array([3, 1, 2]) 

print 'Our array is:' 
print x 
print '\n'  

print 'Applying argsort() to x:' 
y = np.argsort(x) 
print y 
print '\n'  

print 'Reconstruct original array in sorted order:' 
print x[y] 
print '\n'  

print 'Reconstruct the original array using loop:' 
for i in y: 
   print x[i],

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[3 1 2]

Applying argsort() to x:
[1 2 0]

Reconstruct original array in sorted order:
[1 2 3]

Reconstruct the original array using loop:
1 2 3

numpy.lexsort ()

fungsi melakukan pengurutan tidak langsung menggunakan urutan tombol. Kunci dapat dilihat sebagai kolom di spreadsheet. Fungsi ini mengembalikan larik indeks, yang dengannya data yang diurutkan dapat diperoleh. Perhatikan, bahwa kunci terakhir adalah kunci utama dari pengurutan.

Contoh

import numpy as np 

nm = ('raju','anil','ravi','amar') 
dv = ('f.y.', 's.y.', 's.y.', 'f.y.') 
ind = np.lexsort((dv,nm)) 

print 'Applying lexsort() function:' 
print ind 
print '\n'  

print 'Use this index to get sorted data:' 
print [nm[i] + ", " + dv[i] for i in ind]

Ini akan menghasilkan keluaran sebagai berikut -

Applying lexsort() function:
[3 1 0 2]

Use this index to get sorted data:
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']

Modul NumPy memiliki sejumlah fungsi untuk mencari di dalam array. Tersedia fungsi untuk menemukan maksimum, minimum, serta elemen yang memenuhi kondisi tertentu.

numpy.argmax () dan numpy.argmin ()

Kedua fungsi ini mengembalikan indeks elemen maksimum dan minimum di sepanjang sumbu yang diberikan.

Contoh

import numpy as np 
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 

print 'Our array is:' 
print a 
print '\n' 

print 'Applying argmax() function:' 
print np.argmax(a) 
print '\n'  

print 'Index of maximum number in flattened array' 
print a.flatten() 
print '\n'  

print 'Array containing indices of maximum along axis 0:' 
maxindex = np.argmax(a, axis = 0) 
print maxindex 
print '\n'  

print 'Array containing indices of maximum along axis 1:' 
maxindex = np.argmax(a, axis = 1) 
print maxindex 
print '\n'  

print 'Applying argmin() function:' 
minindex = np.argmin(a) 
print minindex 
print '\n'  
   
print 'Flattened array:' 
print a.flatten()[minindex] 
print '\n'  

print 'Flattened array along axis 0:' 
minindex = np.argmin(a, axis = 0) 
print minindex
print '\n'

print 'Flattened array along axis 1:' 
minindex = np.argmin(a, axis = 1) 
print minindex

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

Applying argmax() function:
7

Index of maximum number in flattened array
[30 40 70 80 20 10 50 90 60]

Array containing indices of maximum along axis 0:
[1 2 0]

Array containing indices of maximum along axis 1:
[2 0 1]

Applying argmin() function:
5

Flattened array:
10

Flattened array along axis 0:
[0 1 1]

Flattened array along axis 1:
[0 2 0]

numpy.nonzero ()

Itu numpy.nonzero() fungsi mengembalikan indeks elemen bukan nol dalam larik input.

Contoh

import numpy as np 
a = np.array([[30,40,0],[0,20,10],[50,0,60]]) 

print 'Our array is:' 
print a 
print '\n'  

print 'Applying nonzero() function:' 
print np.nonzero (a)

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[[30 40 0]
 [ 0 20 10]
 [50 0 60]]

Applying nonzero() function:
(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))

numpy.where ()

Fungsi where () mengembalikan indeks elemen dalam larik input di mana kondisi yang diberikan terpenuhi.

Contoh

import numpy as np 
x = np.arange(9.).reshape(3, 3) 

print 'Our array is:' 
print x  

print 'Indices of elements > 3' 
y = np.where(x > 3) 
print y  

print 'Use these indices to get elements satisfying the condition' 
print x[y]

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Indices of elements > 3
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))

Use these indices to get elements satisfying the condition
[ 4. 5. 6. 7. 8.]

numpy.extract ()

Itu extract() fungsi mengembalikan elemen yang memenuhi kondisi apapun.

import numpy as np 
x = np.arange(9.).reshape(3, 3) 

print 'Our array is:' 
print x  

# define a condition 
condition = np.mod(x,2) == 0 

print 'Element-wise value of condition' 
print condition  

print 'Extract elements using condition' 
print np.extract(condition, x)

Ini akan menghasilkan keluaran sebagai berikut -

Our array is:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

Element-wise value of condition
[[ True False True]
 [False True False]
 [ True False True]]

Extract elements using condition
[ 0. 2. 4. 6. 8.]