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.]