آموزش مرتب سازی، جستجو و توابع شمارش در NumPy

3 سال پیش
آموزش مرتب سازی، جستجو و توابع شمارش در NumPy

آموزش مرتب سازی، جستجو و توابع شمارش در NumPy

 

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مرتب سازی، جستجو و توابع شمارش در NumPy خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون

انواع توابع مربوط به مرتب سازی در NumPy موجود است. این توابع مرتب سازی الگوریتم های مرتب سازی مختلفی را اجرا می کنند که هر یک از آنها با سرعت اجرا، عملکرد بدترین حالت، فضای کاری مورد نیاز و پایداری الگوریتم ها مشخص می شوند. جدول زیر مقایسه سه الگوریتم مرتب سازی را نشان می دهد.

نوع سرعت بدترین حالت فضای کار پایدار
‘quicksort’ ۱ O(n^2) ۰ no
‘mergesort’ ۲ O(n*log(n)) ~n/2 yes
‘heapsort’ ۳ O(n*log(n)) ۰ no

 

()numpy.sort

تابع ()sort یک کپی مرتب شده از آرایه ورودی را برمی گرداند. این پارامترهای زیر را دارد –

 

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

 

Sr.No. پارامترها
۱ a

آرایه برای مرتب سازی

۲ axis

محوری که آرایه باید مرتب شود. در صورت عدم وجود، آرایه مسطح می شود و در آخرین محور مرتب می شود

۳ kind

پیش فرض quicksort است

۴ order

اگر آرایه شامل فیلدها باشد ، ترتیب فیلدها مرتب می شود

 

 

مثال

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

 

این خروجی زیر را تولید می کند –

Our array is:
[[۳ ۷]
 [۹ ۱]]

Applying sort() function:
[[۳ ۷]
 [۱ ۹]]

Sort along axis 0:
[[۳ ۱]
 [۹ ۷]]

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 یک مرتب سازی غیر مستقیم بر روی آرایه ورودی ، در امتداد محور داده شده و با استفاده از یک نوع مرتب سازی مشخص برای بازگشت آرایه شاخص های داده انجام می دهد. این آرایه شاخص ها برای ساخت آرایه مرتب شده استفاده می شود.

 

مثال

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

 

این خروجی زیر را تولید می کند –

Our array is:
[۳ ۱ ۲]

Applying argsort() to x:
[۱ ۲ ۰]

Reconstruct original array in sorted order:
[۱ ۲ ۳]

Reconstruct the original array using loop:
۱ ۲ ۳

 

()numpy.lexsort 

تابع مرتب سازی غیر مستقیم را با استفاده از دنباله ای از کلیدها انجام می دهد. کلیدها را می توان به عنوان یک ستون در صفحه گسترده مشاهده کرد. این تابع آرایه ای از شاخص ها را برمی گرداند که با استفاده از آنها می توان داده های مرتب شده را بدست آورد. توجه داشته باشید که آخرین کلید کلید اصلی مرتب سازی است.

 

مثال

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]

 

این خروجی زیر را تولید می کند –

Applying lexsort() function:
[۳ ۱ ۰ ۲]

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

 

NumPy ماژول دارای تعدادی توابع برای جستجوی داخل آرایه است. توابع برای پیدا کردن حداکثر ، حداقل و همچنین عناصر راضی کننده یک شرایط خاص در دسترس هستند.

 

()numpy.argmax و ()numpy.argmin

این دو تابع به ترتیب شاخص های حداکثر و حداقل عناصر را در امتداد محور داده شده برمی گردانند.

 

مثال

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

 

این خروجی زیر را تولید می کند –

 

Our array is:
[[۳۰ ۴۰ ۷۰]
 [۸۰ ۲۰ ۱۰]
 [۵۰ ۹۰ ۶۰]]

Applying argmax() function:
۷

Index of maximum number in flattened array
[۳۰ ۴۰ ۷۰ ۸۰ ۲۰ ۱۰ ۵۰ ۹۰ ۶۰]

Array containing indices of maximum along axis 0:
[۱ ۲ ۰]

Array containing indices of maximum along axis 1:
[۲ ۰ ۱]

Applying argmin() function:
۵

Flattened array:
۱۰

Flattened array along axis 0:
[۰ ۱ ۱]

Flattened array along axis 1:
[۰ ۲ ۰]

 

()numpy.nonzero 

تابع ()numpy.nonzero شاخص های عناصر غیر صفر را در آرایه ورودی برمی گرداند.

مثال

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)

 

این خروجی زیر را تولید می کند –

Our array is:
[[۳۰ ۴۰ ۰]
 [ ۰ ۲۰ ۱۰]
 [۵۰ ۰ ۶۰]]

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

 

()numpy.where 

تابع ()where شاخص های عناصر موجود در یک آرایه ورودی را در صورت برآورده شدن شرط داده شده برمی گرداند.

مثال

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]

این خروجی زیر را تولید می کند –

Our array is:
[[ ۰٫ ۱٫ ۲٫]
 [ ۳٫ ۴٫ ۵٫]
 [ ۶٫ ۷٫ ۸٫]]

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
[ ۴٫ ۵٫ ۶٫ ۷٫ ۸٫]

 

()numpy.extract
تابع ()numpy.extract عناصر ارضا کننده هر شرایطی را برمی گرداند.

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)

 

این خروجی زیر را تولید می کند –

Our array is:
[[ ۰٫ ۱٫ ۲٫]
 [ ۳٫ ۴٫ ۵٫]
 [ ۶٫ ۷٫ ۸٫]]

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

Extract elements using condition
[ ۰٫ ۲٫ ۴٫ ۶٫ ۸٫]

 

منبع.

 

لیست جلسات قبل آموزش NumPy

  1. آموزش NumPy
  2. معرفی NumPy
  3. آموزش محیط کار NumPy
  4. آموزش شی Ndarray در NumPy
  5. آموزش انواع داده ها در NumPy
  6. آموزش ویژگی های آرایه در NumPy
  7. آموزش روال ایجاد آرایه در NumPy
  8. آموزش ایجاد آرایه از داده های موجود در NumPy
  9. آموزش ایجاد آرایه از محدوده های عددی در NumPy
  10. آموزش شاخص گذاری و برش در NumPy
  11. آموزش شاخص گذاری پیشرفته در NumPy
  12. آموزش Broadcasting در NumPy
  13. آموزش تکرار در یک آرایه در NumPy
  14. آموزش دستکاری آرایه در NumPy
  15. آموزش اپراتورهای دودویی در NumPy
  16. آموزش توابع رشته ای در NumPy
  17. آموزش توابع ریاضی در NumPy
  18. آموزش عملیات حسابی در NumPy
  19. آموزش توابع آماری در NumPy
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه