NumPy - Sıralama, Arama ve Sayma İşlevleri
NumPy'de sıralama ile ilgili çeşitli işlevler mevcuttur. Bu sıralama işlevleri, her biri yürütme hızı, en kötü durum performansı, gerekli çalışma alanı ve algoritmaların kararlılığı ile karakterize edilen farklı sıralama algoritmaları uygular. Aşağıdaki tablo, üç sıralama algoritmasının karşılaştırmasını göstermektedir.
tür | hız | En kötü durumda | çalışma alanı | kararlı |
---|---|---|---|---|
'hızlı sıralama' | 1 | O (n ^ 2) | 0 | Hayır |
"birleştirme" | 2 | O (n * log (n)) | ~ n / 2 | Evet |
"heapsort" | 3 | O (n * log (n)) | 0 | Hayır |
numpy.sort ()
Sort () işlevi, girdi dizisinin sıralanmış bir kopyasını döndürür. Aşağıdaki parametrelere sahiptir -
numpy.sort(a, axis, kind, order)
Nerede,
Sr.No. | Parametre ve Açıklama |
---|---|
1 | a Sıralanacak dizi |
2 | axis Dizinin sıralanacağı eksen. Hiçbiri değilse, dizi son eksende sıralanarak düzleştirilir |
3 | kind Varsayılan hızlı sıralamadır |
4 | order Dizi alanlar içeriyorsa, sıralanacak alanların sırası |
Misal
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')
Aşağıdaki çıktıyı üretecek -
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 ()
numpy.argsort()işlevi, girdi dizisi üzerinde, verilen eksen boyunca dolaylı bir sıralama gerçekleştirir ve veri dizin dizisini döndürmek için belirli bir sıralama türü kullanır. Bu indeks dizisi, sıralı diziyi oluşturmak için kullanılır.
Misal
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],
Aşağıdaki çıktıyı üretecek -
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 ()
işlevi, bir dizi tuş kullanarak dolaylı bir sıralama gerçekleştirir. Anahtarlar, bir elektronik tabloda bir sütun olarak görülebilir. İşlev, sıralanan verilerin elde edilebileceği bir dizi dizin döndürür. Son anahtarın, sıralamanın birincil anahtarı olduğunu unutmayın.
Misal
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]
Aşağıdaki çıktıyı üretecek -
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.']
NumPy modülünün bir dizi içinde arama yapmak için bir dizi işlevi vardır. Maksimum, minimum ve belirli bir koşulu karşılayan öğeleri bulmak için işlevler mevcuttur.
numpy.argmax () ve numpy.argmin ()
Bu iki işlev, verilen eksen boyunca sırasıyla maksimum ve minimum elemanların indislerini döndürür.
Misal
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
Aşağıdaki çıktıyı üretecek -
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 ()
numpy.nonzero() işlev, girdi dizisindeki sıfır olmayan öğelerin dizinlerini döndürür.
Misal
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)
Aşağıdaki çıktıyı üretecek -
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 ()
Where () işlevi, verilen koşulun karşılandığı bir girdi dizisindeki öğelerin dizinlerini döndürür.
Misal
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]
Aşağıdaki çıktıyı üretecek -
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 ()
extract() function herhangi bir koşulu karşılayan öğeleri döndürür.
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)
Aşağıdaki çıktıyı üretecek -
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.]