ناپخته کار با آرایه ها و ماتریس ها


کتابخانه داده NumPy

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

الگوریتم های ریاضی پیاده سازی شده در زبان های تفسیر شده (مثلا پایتون) اغلب بسیار کندتر از آنهایی هستند که در زبان های کامپایل شده (مانند Fortran، C، Java) پیاده سازی می شوند. کتابخانه NumPy پیاده سازی هایی از الگوریتم های محاسباتی (در قالب توابع و عملگرها) را ارائه می دهد که برای کار با آرایه های چند بعدی بهینه شده اند. 
در نتیجه، هر الگوریتمی که بتوان آن را به صورت دنباله ای از عملیات روی آرایه ها (ماتریس) بیان کرد و با استفاده از NumPy پیاده سازی کرد، به اندازه کافی سریع است.

NumPy (Numeric Python) یک کتابخانه ریاضی هسته ای برای کار با داده ها است. این کتابخانه زیربنای کتابخانه‌های دیگری برای کار با یادگیری ماشین یا وظایف تجزیه و تحلیل داده است (به عنوان مثال، Pandas (کار با داده‌های جدولی)، SciPy (روش‌های بهینه‌سازی و محاسبات علمی)، < tt>Matplotlib (نقشه)).

 

کار با NumPy

برای شروع کار با کتابخانه numpy، باید آن را در ابتدای برنامه مانند هر کتابخانه دیگری وارد کنید. وارد کردن numpy یا بیشتر (که بیشتر استفاده می شود) numpy را به عنوان np وارد کنید



بردارهای NumPy

بردار (یا آرایه) در NumPy مجموعه مرتب شده ای از داده های همگن است.

یک عنصر از یک بردار را می توان با شاخص آن، درست همانطور که در لیست ها انجام می شود، دسترسی داشت. هر عنصر بردار مکان خاص خود را دارد که در حین ایجاد تنظیم می شود.
همه عناصر برداری دارای نوع داده یکسانی هستند (int، str، bool، و غیره).

ایجاد یک بردار
برای ایجاد یک برداری، باید از سازنده numpy.array (یک شیء تکرارپذیر) استفاده کنید.
پرانتز هر شیء قابل تکرار را نشان می دهد: tuple، list، range() و غیره
 
مثال 
numpy را به عنوان np وارد کنید numpy را به عنوان np وارد کنید print(np.array((1,2,3,4,5))) # بردار از tuple print(np.array([1,2,3,4,5])) # بردار از لیست print(np.array(range(5))) # بردار از generator

کار با عناصر برداری

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

مثال
<جدول> <بدن>
1
2
3
4
5
6
7
numpy را به عنوان np وارد کنید V = np.array((1،2،3،4)) چاپ (V[0]) # 1 چاپ (V[-1]) # 4 چاپ (V[1:-2]) # [2] print(V[::2]) # [1 3]

انتخاب عناصر برداری
برای انتخاب عناصر برداری، می توانید از بردار حاوی مقادیر منطقی (عبارات) استفاده کنید. عناصر بردار که در بردار با مقادیر بولی True خواهند بود انتخاب خواهند شد.
 

مثال
numpy را به عنوان np وارد کنید V = np.array([1,-2,3,-4,5]) # دو عنصر اول بردار را انتخاب کنید print(V[np.array((درست، درست، غلط، نادرست، نادرست))]) # [ 1 -2] # عناصر برداری مثبت را انتخاب کنید چاپ (V[V > 0]) # [1 3 5] # عناصر حتی بردار را انتخاب کنید چاپ (V[V % 2 == 0]) # [-2 -4]

راههای ایجاد آرایه و ماتریس

راه های مفید دیگر برای ایجاد آرایه ها و ماتریس ها.

مثال
<جدول> <بدن>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
یازده
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
سی
31
32
33
34
35
36
37
numpy را به عنوان np وارد کنید # آرایه یک بعدی صفر print(np.zero(5)) #[0. 0.0.0.0.] # آرایه دو بعدی صفر print(np.zeros((2, 3))) # [[0. 0.0.] #[0. 0.0.]] # آرایه سه بعدی از واحدها print(np.ones((2،3،4))) # [[[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]] # # [[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]]] # آرایه صفر با نشانه نوع print(np.zeros(5, dtype=np.int)) # [0 0 0 0 0] # آرایه ای بر اساس لیستی از لیست ها print(np.array([[1,2.0],[0,0],(1,3.)])) # [[1. 2.] #[0. 0.] # [1. 3.]] # آرایه ای پر از عناصر یک پیشرفت حسابی که از 0 شروع می شود print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9] # پیشرفت حسابی با نشانگر نوع print(np.arange(2، 10، dtype=np.float)) # [2. 3. 4. 5. 6. 7. 8. 9.] # پیشروی حسابی با تفاوت غیرصحیح print(np.arange(2، 3، 0.1)) # [2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9] # پیشروی حسابی با تعداد معینی از جمله print(np.linspace(1., 4., 6)) # [1. 1.6 2.2 2.8 3.4 4. ]

عناصر آرایه صفر
 
تابع nonzero(V) 
نتیجه چندین آرایه است. هر یک از این آرایه ها مربوط به یک محور جداگانه از آرایه اصلی است و شامل شاخص هایی با عناصر غیر صفر در این آرایه است.
V - آرایه NumPy یا شی آرایه مانند.
یک  تتپل پایتون (تعدادی) - تعدادی با آرایه‌هایی از شاخص‌های عناصر غیرصفر آرایه اصلی V برمی‌گرداند.
 
تابع count_nonzero(V) 
این تابع بر اساس روش داخلی  __bool__() اشیاء پایتون است که درستی آنها را بررسی می کند. نتیجه این است که تابع  count_nonzero() در واقع می تواند نه تنها با اعداد، بلکه با هر شیئی که می تواند درست یا نادرست باشد نیز کار کند.
V - آرایه NumPy یا شی آرایه مانند.
تابع تعداد عناصر آرایه غیر صفر را در امتداد محور مشخص شده برمی گرداند.

آرایه های مورب

تابع  diag(V, k=0) به شما امکان می دهد یک مورب از یک آرایه استخراج کنید و همچنین آرایه های مورب را از آرایه های یک بعدی بسازید.
V - یک شی آرایه مانند، آرایه های دو بعدی یا یک بعدی، ماتریس ها، لیست ها یا تاپل ها، یا هر تابع یا شی با روشی که یک لیست یا تاپل را برمی گرداند.
k - شاخص مورب (اختیاری).
پیش فرض k = 0 است که با قطر اصلی مطابقت دارد. یک مقدار مثبت k مورب را به سمت بالا و یک مقدار منفی آن را به پایین می برد.

تابع آرایه NumPy (ndarray) را برمی گرداند - مورب آرایه مشخص شده یا یک آرایه مورب از آرایه یک بعدی مشخص شده.

آرایه‌های

دو بعدی NumPy

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

مثال
<جدول> <بدن>
1
2
3
4
5
6
7
8
# تابع reshape() شکل یک آرایه را بدون تغییر داده های آن تغییر می دهد. x = np.arange(12).reshape(3، 4) print(x) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] # برای دسترسی به یک عنصر، مختصات آن را با کاما از هم جدا کنید print(x[1, 2]) # 6