آموزش شاخص گذاری پیشرفته در NumPy

3 سال پیش
آموزش شاخص گذاری پیشرفته در NumPy

آموزش شاخص گذاری پیشرفته در NumPy

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

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

می توان انتخابی را از ndarray انجام داد که یک توالی غیر دوتایی باشد ، یک ماده جدا کننده از نوع داده صحیح یا بولی یا یک تاپل باشد که حداقل یک مورد به عنوان یک دنباله باشد. شاخص گذاری پیشرفته همیشه یک کپی از داده را برمی گرداند. در مقابل این ، برش فقط یک دیدگاه ارائه می دهد.

دو نوع شاخص گذاری پیشرفته وجود دارد – Integer و Boolean.

شاخص گذاری عدد صحیح

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

در مثال زیر ، یک عنصر از ستون مشخص شده از هر ردیف از شی ndar ndarray انتخاب شده است. از این رو ، شاخص سطر شامل تمام شماره های سطر است و شاخص ستون عنصری را انتخاب می کند.

مثال ۱

import numpy as np 

x = np.array([[1, 2], [3, 4], [5, 6]]) 
y = x[[0,1,2], [0,1,0]] 
print y

 

خروجی آن به شرح زیر است –

[۱ ۴ ۵]

 

این انتخاب شامل عناصر موجود در (۰،۰) ، (۱،۱) و (۲،۰) از آرایه اول است.

در مثال زیر ، عناصری که در گوشه های یک آرایه ۴X3 قرار گرفته اند ، انتخاب می شوند. شاخص های ردیف انتخاب [۰ ، ۰] و [۳،۳] در حالی که شاخص های ستون [۰،۲] و [۰،۲] هستند.

مثال ۲

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 
   
print 'Our array is:' 
print x 
print '\n' 

rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]]) 
y = x[rows,cols] 
   
print 'The corner elements of this array are:' 
print y

 

خروجی این برنامه به شرح زیر است –

Our array is:                                                                 
[[ ۰  ۱  ۲]                                                                   
 [ ۳  ۴  ۵]                                                                   
 [ ۶  ۷  ۸]                                                                   
 [ ۹ ۱۰ ۱۱]]
 
The corner elements of this array are:                                        
[[ ۰  ۲]                                                                      
 [ ۹ ۱۱]]

 

انتخاب حاصل یک شی is ndarray است که حاوی عناصر گوشه ای است.

با استفاده از یک برش (:) یا بیضی (…) با آرایه فهرست می توان نمایه سازی پیشرفته و اساسی را انجام داد. مثال زیر از slice برای سطر و index پیشرفته برای ستون استفاده می کند. وقتی از برش برای هر دو استفاده می شود ، نتیجه یکسان است. اما فهرست پیشرفته کپی می شود و ممکن است طرح حافظه متفاوتی داشته باشد.

مثال ۳

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 

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

# slicing 
z = x[1:4,1:3] 

print 'After slicing, our array becomes:' 
print z 
print '\n'  

# using advanced index for column 
y = x[1:4,[1,2]] 

print 'Slicing using advanced index for column:' 
print y

 

خروجی این برنامه به شرح زیر است:

Our array is:
[[ ۰  ۱  ۲] 
 [ ۳  ۴  ۵] 
 [ ۶  ۷  ۸]
 [ ۹ ۱۰ ۱۱]]
 
After slicing, our array becomes:
[[ ۴  ۵]
 [ ۷  ۸]
 [۱۰ ۱۱]]

Slicing using advanced index for column:
[[ ۴  ۵]
 [ ۷  ۸]
 [۱۰ ۱۱]]

 

شاخص گذاری آرایه بولی

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

مثال ۱

در این مثال، موارد بزرگتر از ۵ در نتیجه نشاخص گذاری بولی بازگردانده می شوند.

import numpy as np 
x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]]) 

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

# Now we will print the items greater than 5 
print 'The items greater than 5 are:' 
print x[x > 5]

 

خروجی این برنامه خواهد بود –

Our array is: 
[[ ۰  ۱  ۲] 
 [ ۳  ۴  ۵] 
 [ ۶  ۷  ۸] 
 [ ۹ ۱۰ ۱۱]] 
 
The items greater than 5 are:
[ ۶  ۷  ۸  ۹ ۱۰ ۱۱]

 

مثال ۲

در این مثال ، عناصر NaN (Not a Number) با استفاده از ~ (عملگر متمم) حذف می شوند.

import numpy as np 
a = np.array([np.nan, 1,2,np.nan,3,4,5]) 
print a[~np.isnan(a)]

 

خروجی آن خواهد بود –

[۱٫ ۲٫ ۳٫ ۴٫ ۵٫]

 

مثال ۳

مثال زیر نحوه فیلتر کردن عناصر غیر پیچیده از یک آرایه را نشان می دهد.

import numpy as np 
a = np.array([1, 2+6j, 5, 3.5+5j]) 
print a[np.iscomplex(a)]

 

در اینجا، خروجی به شرح زیر است –

[۲٫۰ + ۶٫j 3.5 + 5.j]

 

منبع.

 

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

  1. آموزش NumPy
  2. معرفی NumPy
  3. آموزش محیط کار NumPy
  4. آموزش شی Ndarray در NumPy
  5. آموزش انواع داده ها در NumPy
  6. آموزش ویژگی های آرایه در NumPy
  7. آموزش روال ایجاد آرایه در NumPy
  8. آموزش ایجاد آرایه از داده های موجود در NumPy
  9. آموزش ایجاد آرایه از محدوده های عددی در NumPy
  10. آموزش شاخص گذاری و برش در NumPy
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه