ایجاد آرایه ها با ماژول NumPy در پایتون (Python) - بخش دوم

ایجاد آرایه ها با ماژول NumPy در پایتون (Python)  -بخش دوم

زمان مطالعه

5 دقیقه

تعداد بازدید

107

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


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

ایجاد آرایه ها با ماژول NumPy در پایتون (Python) - بخش دوم

ایجاد آرایه ها با ماژول NumPy در پایتون (Python)  -بخش دوم

زمان مطالعه

5 دقیقه

تعداد بازدید

107

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب

در بخش اول این مقاله گفتیم که 6 مکانیسم برای ایجاد آرایه وجود دارد و اولین مکانیسم آن را هم که "تبدیل از سایر ساختارهای پایتون (به عنوان مثال لیست ها، چندتایی ها و …)  "بود به شما آموزش دادیم، حال در این مقاله به بررسی 5 مکانیسم دیگر می پردازیم.

توابع داخلی ایجاد آرایه در ماژول NumPy

این روش دومین مکانیسم ایجاد آرایه است. ماژول NumPy دارای بیش از 40 تابع داخلی برای ایجاد آرایه است که می توانید در این آدرس همه آن ها را مطالعه کنید.

این توابع را می توان بر اساس ابعاد آرایه ای که ایجاد می کنند، تقریبا به سه دسته تقسیم کرد:

  • 1D Array
  • 2D Array
  • Ndarray

توابع ایجاد آرایه یک بعدی

توابع ایجاد آرایه یک بعدی، به عنوان مثال numpy.linspace و numpy.arange به طور کلی حداقل به دو ورودی شروع (start) و پایان (stop) نیاز دارند.

تابع numpy.arange آرایه هایی را ایجاد می کند که به طور منظم افزایش مقدار داده می شوند. در مثال زیر چند نمونه نشان داده شده است.

 

Import numpy as np
np.arange(10)
np.arange(2, 10, dtype=float)
np.arange(2, 3, 0.1)

 

توابع ایجاد آرایه یک بعدی NumPy در پایتون (Python)

 

نکته: بهترین روش برای ایجاد آرایه با تابع numpy.arange، استفاده از مقادیر صحیح شروع (start)، پایان (stop) و گام افزایش (step) است. در مورد dtype نیز نکات ریزی در این مثال وجود دارد. در مثال بالا، در دومین مورد، از ویژگی dtype استفاده شده است، اما در آرایه سوم کهdtype  مشخص نشده است، چون گام آن 0.1 است، مقدار dtype آن برابر با float است. به علت خطای گرد کردن عدد، بعضی اوقات شامل مقدار پایان (stop) می شود.

تابع numpy.linspace، آرایه هایی با تعداد مشخصی از عناصر ایجاد می کند و فواصل مشخصی بین مقادیر ایجاد می کند. به مثال زیر دقت کنید:

 

Import numpy as np
a = np.linspace(1., 4., 6)
print(a)

 

توابع ایجاد آرایه یک بعدی NumPy در پایتون (Python)

 

مزیت این تابع ایجاد آرایه این است که تعداد عناصر را تضمین می کند و آرایه شامل مقادیر نقطه شروع (start) و نقطه پایان (stop) خواهد بود، در صورتی که در تابع numpy.arange(start, stop, step)، آرایه شامل نقطه پایان (stop) نبود.

توابع ایجاد آرایه دو بعدی

توابع ایجاد آرایه های دو بعدی مانند تابع numpy.eye، تابع numpy.diag و تابع numpy.vander، ویژگی های ماتریس های خاصی را تعریف می کنند که به صورت آرایه های دو بعدی نمایش داده می شوند.

np.eye(m , n) یک ماتریس هویت دو بعدی ایجاد می کند. عناصری که سطر و ستون آن ها برابر هستند دارای مقدار 1 و بقیه دارای مقدار 0 هستند.

مثال: در زیر دو آرایه هویت ایجاد کرده ایم.

 

Import numpy as np
a = np.eye(3)
b = np.eye(3, 5)
print(a)
print(b)

 

توابع ایجاد آرایه دو بعدی NumPy در پایتون (Python)

 

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

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

مثال هایی از تابع ایجاد آرایه numpy.diag :

 

Import numpy as np
a = np.diag([1, 2, 3])
b = np.diag([1, 2, 3], 1)
c = np.array([[1, 2], [3, 4]])
d = np.diag(c)
print(a)
print(b)
print(c)
print(d)

 

توابع ایجاد آرایه دو بعدی NumPy در پایتون (Python)

 

تابع vander(x , n)، ماتریس واندرموند (Vandermonde) را به عنوان یک آرایه دو بعدی در ماژول NumPy تعریف می کند.

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

در زیر چند مثال از تابع ایجاد آرایه numpy.vander را برای شما آورده ایم.

 

Import numpy as np
a = np.vander(np.linspace(0, 2, 5), 2)
b = np.vander([1, 2, 3, 4], 2)
c = np.vander((1, 2, 3, 4), 4)
print(a)
print(b)
print(c)

 

توابع ایجاد آرایه دو بعدی NumPy در پایتون (Python)

 

توابع عمومی ایجاد ndarray

توابع ایجاد ndarray، به عنوان مثال تابع numpy.ones، تابع numpy.zeros و تابع random، آرایه ها را بر اساس شکل دلخواه ایجاد می کنند. توابع ایجاد ndarray می توانند با تعیین طول بعد، آرایه هایی با هر ابعادی ایجاد کنند.

تابع numpy.zeros، یک آرایه با مقادیر 0 با ابعاد مشخص ایجاد می کند.نوع پیش فرض dtype آن float64 است.

مثال: در زیر دو آرایه با مقادیر 0 با تابع numpy.zeros ایجاد کرده ایم.

 

Import numpy as np
arr = np.zeros((2, 3))
arr2 = np.zeros((2, 3, 2))
print(arr)
print(arr2)

 

توابع عمومی ایجاد ndarray ماژول NumPy در پایتون (Python)

 

تابع numpy.ones از هر نظر شبیه به تابع numpy.zeros است با این تفادت که به جای اینکه آرایه را با مقادیر 0 پر کند، با مقادیر 1 آن ها را پر می کند.

مثال: در زیر دو آرایه با مقادیر 1 با تابع numpy.ones ایجاد کرده ایم.

 

Import numpy as np
arr = np.ones((2, 3))
arr2 = np.ones((2, 3, 2))
print(arr)
print(arr2)

 

توابع عمومی ایجاد ndarray ماژول NumPy در پایتون (Python)

 

متد تصادفی numpy.random یک آرایه با ابعاد مشخص، با مقادیر تصادفی بین دو مقدار 0 و 1 ایجاد می کند. در مثال زیر دو آرایه با اشکال (2,3) و (2,3,2) ایجاد شده است.

 

import numpy.random as npr
a = npr.random((2,3))
b = npr.random((2,3,2))
print(a)
print(b)

 

توابع عمومی ایجاد ndarray ماژول NumPy در پایتون (Python)

 

تابع numpy.indices مجموعه ای از آرایه ها را ایجاد می کند. (به عنوان آرایه ای با ابعاد بالاتر)

مثال: در زیر یک آرایه با تابع numpy.indices ایجاد کرده ایم.

 

Import numpy as np
a = np.indices((3,3))
print(a)

 

توابع عمومی ایجاد ndarray ماژول NumPy در پایتون (Python)

 

این روش برای ارزیابی توابع چند بعدی در یک شبکه معمولی بسیار مفید و کاربردی است.

تکثیر، پیوستن و تغییر آرایه های موجود

سومین روش ایجاد آرایه ها با کپی کردن، الصاق و تغییر در آرایه های موجود است. هنگامی که آرایه ها را ایجاد کردید، می توانید با تکثیر از آرایه های موجود، الصاق آرایه های موجود به یکدیگر و یا تغییر دادن آرایه های موجود، آرایه های جدید ایجاد کنید. هنگامی که یک آرایه یا عناصر یک آرایه را به یک متغیر جدید اختصاص می دهید، شما باید حتما با numpy.copy، آرایه را کپی کنید، در غیر این صورت تغییرات بر روی آرایه اصلی اعمال خواهد شد. به مثال زیر توجه کنید:

 

Import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a[:2]
b += 1
print('a =', a, '; b =', b)

 

کپی کردن آرایه موجود برای ایجاد آرایه جدید NumPy در پایتون (Python)

 

در این مثال، شما یک آرایه جدید ایجاد نکرده اید. شما در این مثال متغیر b را تعریف کرده اید که دو عنصر اول متغیر a را نشان می دهد. هنگامی که یک واحد به b اضافه می کنید، با اضافه کردن یک واحد به a هم همان نتیجه را خواهید گرفت. هنگامی که می خواهید یک آرایه جدید ایجاد کنید، از روال ایجاد آرایه numpy.copy استفاده کنید، مانند مثال زیر:

 

Import numpy as np
a = np.array([1, 2, 3, 4])
b = a[:2].copy()
b += 1
print('a = ', a, 'b = ', b)

 

کپی کردن آرایه موجود برای ایجاد آرایه جدید NumPy در پایتون (Python)

 

تعدادی روال معمول برای الصاق آرایه های موجود به یکدیگر وجود دارد، مانند numpy.vstack, numpy.hstack, numpy.block.

مثال: در زیر مثالی از اتصال چهار آرایه 2 در 2، به یک آرایه 4 در 4، با استفاده از numpy.block آورده ایم.

 

Import numpy as np
A = np.ones((2, 2))
B = np.eye((2))
C = np.zeros((2, 2))
D = np.diag((-3, -4))
np.block([[A, B],[C, D]])

 

join کردن آرایه های موجود برای ایجاد آرایه جدید NumPy در پایتون (Python)

 

خواندن آرایه ها از دیسک، از فرمت های استاندارد و سفارشی

این چهارمین روش ایجاد آرایه هاست، که متداول ترین آن ها برای ایجاد آرایه های بزرگ است. جزئیات این کار بستگی زیادی به فرمت داده های روی دیسک دارد.

فرمت های دودویی استاندارد

زمینه های مختلف، دارای فرمت های استاندارد برای داده های آرایه ها هستند.

 

HDF5: h5py
FITS: Astropy

 

نمونه هایی از فرمت ها به طور مستقیم قابل خواندن نیستند، اما تبدیل آن ها برای آن ها دشوار نیست، فرمت هایی هستند که توسط کتابخانه هایی مانند PIL پشتیبانی می شوند.(این کتابخانه قادر به خواندن و نوشتن بسیاری از فرمت های تصویری مانند jpg و png است)

فرمت های ASCII رایج

فایل های محدود شده مانند Comma Separated Value (CSV) و Tab Separated Value (TSV) فایل هایی هستند که برای برنامه هایی مانند Excel و LabView استفاده می شوند. توابع پایتون می توانند این فایل ها را خط به خط بخوانند و تجزیه کنند. ماژول NumPy دارای دو روال numpy.loadtxt و numpy.genfromtxt برای وارد کردن یک فایل با داده های محدود است. در زیر یک مثال ساده آورده ایم که یک فایل CSV را خوانده و به آرایه تبدیل کرده است.

فایل simple.csv :

 

فرمت های ASCII رایج

 

خواندن و ایجاد آرایه از آن با numpy.loadtxt :

 

خواندن آرایه ها از دیسک برای ایجاد آرایه NumPy در پایتون (Python)

 

فایل های ASCII رایج را می توان با استفاده از scipy.io و Pandas نیز خواند.

ایجاد آرایه از بایت های خام با استفاده از strings (رشته ها) و Buffers (بافرها)

این پنجمین روش ایجاد آرایه در NumPy است که روش های زیادی برای آن وجود دارد. اگر فایل دارای فرمت نسبتا ساده ای باشد، می توانید یک کتابخانه I/O ساده بنویسید و از تابع ماژول NumPy با عنوان fromfile() و یا .tofile() برای خواندن و نوشتن مستقیم آرایه های NumPy استفاده کنید. اگر یک کتابخانه خوب C یا ++C وجود داشته باشد که داده ها را بخواند، می توان آن کتابخانه را با تکنیک های مختلفی نوشت، هر چند که مطمئنا کارایی بهتر و بیشتری دارند، اما برای ایجاد ارتباط با C یا ++C نیاز به دانش پیشرفته تری دارید.

استفاده از توابع کتابخانه های ویژه (مانند SciPy, Pandas و OpenCV)

پایتون یک کتابخانه اساسی برای محفظه های آرایه در پشته محاسبات علمی پایتون است. بسیاری از کتابخانه های پایتون از جمله SciPy ، Pandas و OpenCV، از NumPy ndarray به عنوان فرمت رایج برای تبادل داده استفاده می کنند، این کتابخانه ها می توانند آرایه های NumPy را ایجاد، اجرا و با آن ها کار کنند.

 

 

خب به پایان این بخش از مقالات ماژول NumPy در پایتون رسیدیم و راه های ایجاد آرایه های NumPy را یاد گرفتیم.

در مقاله بعدی به بررسی شاخص گذاری آرایه ها در ماژول NumPy می پردازیم.

 

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


پرسش و پاسخ
0
دوره پیشنهادی
دوره پیشنهادی