آموزش مرتب سازی، جستجو و توابع شمارش در NumPy
آموزش مرتب سازی، جستجو و توابع شمارش در NumPy
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مرتب سازی، جستجو و توابع شمارش در NumPy خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون
انواع توابع مربوط به مرتب سازی در NumPy موجود است. این توابع مرتب سازی الگوریتم های مرتب سازی مختلفی را اجرا می کنند که هر یک از آنها با سرعت اجرا، عملکرد بدترین حالت، فضای کاری مورد نیاز و پایداری الگوریتم ها مشخص می شوند. جدول زیر مقایسه سه الگوریتم مرتب سازی را نشان می دهد.
نوع | سرعت | بدترین حالت | فضای کار | پایدار |
---|---|---|---|---|
‘quicksort’ | 1 | O(n^2) | 0 | no |
‘mergesort’ | 2 | O(n*log(n)) | ~n/2 | yes |
‘heapsort’ | 3 | O(n*log(n)) | 0 | no |
()numpy.sort
تابع ()sort یک کپی مرتب شده از آرایه ورودی را برمی گرداند. این پارامترهای زیر را دارد –
1 |
numpy.sort(a, axis, kind, order) |
Sr.No. | پارامترها |
---|---|
1 | a
آرایه برای مرتب سازی |
2 | axis
محوری که آرایه باید مرتب شود. در صورت عدم وجود، آرایه مسطح می شود و در آخرین محور مرتب می شود |
3 | kind
پیش فرض quicksort است |
4 | order
اگر آرایه شامل فیلدها باشد ، ترتیب فیلدها مرتب می شود |
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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') |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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 یک مرتب سازی غیر مستقیم بر روی آرایه ورودی ، در امتداد محور داده شده و با استفاده از یک نوع مرتب سازی مشخص برای بازگشت آرایه شاخص های داده انجام می دهد. این آرایه شاخص ها برای ساخت آرایه مرتب شده استفاده می شود.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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], |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 |
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
تابع مرتب سازی غیر مستقیم را با استفاده از دنباله ای از کلیدها انجام می دهد. کلیدها را می توان به عنوان یک ستون در صفحه گسترده مشاهده کرد. این تابع آرایه ای از شاخص ها را برمی گرداند که با استفاده از آنها می توان داده های مرتب شده را بدست آورد. توجه داشته باشید که آخرین کلید کلید اصلی مرتب سازی است.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 |
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] |
این خروجی زیر را تولید می کند –
1 2 3 4 5 |
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 ماژول دارای تعدادی توابع برای جستجوی داخل آرایه است. توابع برای پیدا کردن حداکثر ، حداقل و همچنین عناصر راضی کننده یک شرایط خاص در دسترس هستند.
()numpy.argmax و ()numpy.argmin
این دو تابع به ترتیب شاخص های حداکثر و حداقل عناصر را در امتداد محور داده شده برمی گردانند.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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 |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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 شاخص های عناصر غیر صفر را در آرایه ورودی برمی گرداند.
مثال
1 2 3 4 5 6 7 8 9 |
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) |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 |
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 شاخص های عناصر موجود در یک آرایه ورودی را در صورت برآورده شدن شرط داده شده برمی گرداند.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 |
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] |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 |
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
تابع ()numpy.extract عناصر ارضا کننده هر شرایطی را برمی گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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) |
این خروجی زیر را تولید می کند –
1 2 3 4 5 6 7 8 9 10 11 12 |
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.] |
لیست جلسات قبل آموزش NumPy
- آموزش NumPy
- معرفی NumPy
- آموزش محیط کار NumPy
- آموزش شی Ndarray در NumPy
- آموزش انواع داده ها در NumPy
- آموزش ویژگی های آرایه در NumPy
- آموزش روال ایجاد آرایه در NumPy
- آموزش ایجاد آرایه از داده های موجود در NumPy
- آموزش ایجاد آرایه از محدوده های عددی در NumPy
- آموزش شاخص گذاری و برش در NumPy
- آموزش شاخص گذاری پیشرفته در NumPy
- آموزش Broadcasting در NumPy
- آموزش تکرار در یک آرایه در NumPy
- آموزش دستکاری آرایه در NumPy
- آموزش اپراتورهای دودویی در NumPy
- آموزش توابع رشته ای در NumPy
- آموزش توابع ریاضی در NumPy
- آموزش عملیات حسابی در NumPy
- آموزش توابع آماری در NumPy
دیدگاه شما