آموزش کتابخانه Numpy (نامپای) در پایتون
Numpy به چه معنی است؟
Numpy مخفف numerical python به معنای پایتون عددی و یکی دیگر از صدها کتابخانه پایتون است که با اعداد (آرایه های چند بعدی و ماتریس ها) در ارتباط می باشد و در زمینه های مختلف علوم و مهندسی از آن استفاده است.
پردازش و تغییر داده
وقتی سخن از پردازش و تغییر داده ها به میان می آید، در واقع منظور همان تغییر آرایه ها می باشد چرا که داده ها نیز برای کامپیوتر ها به صورت آرایه در نظر گرفته می شوند.
برای مثال داده های تصویری، آرایه های دوبعدی از پیکسل هایی شامل سطرها و ستون ها تشکیل شده که مقادیر 0 تا 255 و یا داده های ویدیویی به صورت آرایه های سه بعدی از سطر، ستون و عمق می باشند.
ساخت کتابخانه Numpy و کاربرد آن
برای ساخت این کتابخانه از بسته های مختلف زبان پایتون شامل Matplotlib، scikit-learn و SciPy استفاده شده است، اما قسمت های زیادی از آن که به محاسبات سریع نیاز دارد به زبان های c و c++ نوشته شده است.
با کمک این کتابخانه می توانیم طیف وسیعی از عملیات های ریاضی را به انجام برسانیم.
آموزش نصب Numpy
برای نصب کتابخانه numpy کافیست که به قسمت cmd ویندوز رفته و نوشته زیر را در آن تایپ کنید و کلید inter را فشار دهید.
نکته: اگر از آناکوندا استفاده میکنید، کتابخانه numpy به صورت پیشفرض در آناکوندا نصب است و نیازی به نصب ندارد، و شما فقط باید این کتابخانه را import کنید.
pip install numpy
بسیار خب تا این جا شما موفق به نصب numpy شده اید، برای استفاده از این بسته آن را به صورت زیر در محیط ژوپیتر نوت بوک فراخوانی کنید.
import numpy as np
در کد بالا کتابخانه numpy را وارد کردیم و به خاطر اینکه کل numpy رو همش ننویسیم یک نام خلاصه هم برای نامپای درنظر گرفتیم. معمولا نام کوتاه شده np برای این کتابخانه درنظر گرفته میشود (شما هرچیزی میتوانید در نظر بگیرید)
ساخت آرایه یک بعدی از اعداد 0 تا 9 با numpy
import numpy as np
a = np.arange(10)
a
خروجی 👇
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
تفاوت آرایه با لیست
- اگرچه درنگاه اول ممکن است لیست ها و آرایه ها را مشابه یک دیگر بدانیم اما تفاوت مهم آنها هنگام تخصیص حافظه برای داده ها مشخص می شود.
- آرایه ها در مقابل لیست ها حجم کم تری از حافظه را اشغال می کنند از این رو سرعت آرایه ها نیز نسبت به لیست ها بالاتر خواهد بود،در نتیجه برای کار با داده های حجیم، استفاده از آرایه ها گزینه ی مناسب تری می باشد.
نکته: دقت کنید که هنگام استفاده از آرایه ها فقط مجاز به استفاده از یک نوع داده می باشیم و نمیتوانیم از انواع داده های مختلف برای آرایه ها استفاده کنیم.
ایجاد یک آرایه ساده با استفاده از لیست با دستور np.array در numpy
my_list=[1,2,3]
a=np.array(my_list)
print(a)
خروجی 👇
[1 2 3]
ایندکس گذاری
برای دسترسی به هر کدام از عناصر آرایه، از ایندکس گذاری استفاده می شود.
همانطور که در شکل زیر مشاهده می کنید، به هرکدام از عناصر موجود در یک آرایه یک عدد اختصاص داده شده است که موقعیت عناصر موجود در آرایه را در آن مشخص می کند و می توان با استفاده از آنها به تک تک عناصر یک آرایه دسترسی داشته باشیم و یا آرایه ها را از یک عنصر تا عنصر دیگر برش بزنیم.
ایندکس گذاری می تواند از سمت چپ به راست یا از راست به چپ (در این صورت از اعداد منفی برای ایندکس گذاری استفاده می شود و از انتهای لیست به سمت ابتدای آن حرکت می کنیم) باشد.
نکته: شروع از صفر است
مثال: در آرایه یک بعدی زیر اولین عنصر از آرایه را انتخاب کرده ایم.
a =np.array(["Matlab","Python","C++","Java"])
print(a[0])
#یا
a[0]
خروجی 👇
Matlab
'Matlab'
مثال: در آرایه دو بعدی زیر از بعد صفر که مربوط به سطر اول می باشد، عنصر اول را که در ستون شماره صفر قرار دارد انتخاب کرده ایم .
a=np.array([[11,12],
[13,14]])
print(a[0][0])
خروجی 👇
11
برش آرایه ها از یک عنصر تا عنصر دیگر
در کد زیر ایندکس گذاری از آخر به اول انجام شده و قسمتی از آرایه برش داده شده است
arr = np.array([2,4,8,10,15,20,25])
print(arr[-5:-2])
خروجی 👇
[8 10 15]
همینطور که در تصویر پایین مشاهده میکنید، ایندکس گزاری منفی یا برعکس از -1 شروع میشود (از راست به چپ) و زمانی یک بازه را در نظر میگیریم اول بازه را باید در نظر بگیریم ولی اخر بازه نباید لحاظ شود، مثل مثال بالا که بازه از منفی 5 تا منفی 2 بوده که عدد 8 اورده شده ولی عدد متناظر منفی 2 که 20 است اورده نشده
توابع numpy
1. مشاهده ابعاد آرایه با استفاده از متد ndim
ابعاد آرایه ها به صورت محور نشان داده می شوند، این آرایه دارای دو محور سطر و ستون می باشد.
نکته: برای آرایه های با ابعاد 3 و بالاتر از آن از اصطلاح تنسور استفاده می شود.
a =np.array([[1, 2, 3], [4, 5, 6]])
print(a.ndim)
خروجی 👇
2
2. مشاهده شکل آرایه با استفاده از متد shape
در واقع این متد طول محور های یک آرایه را نشان میدهد آرایه زیر آرایه ای با دو محور است که طول محور اول آن 3 و طول محور دوم آن 4 است.
بهمون میگه آرایه ما چند در چند است
a =np.array([[1, 2, 3,4],
[5,6,7,8],
[9,10,11,12]])
print(a.shape)
خروجی 👇
(3, 4)
که در مثال بالا آرایه ما 3 سطر و 4 ستون دارد (عدد اول تعداد سطرها و عدد دوم تعداد ستونها را نشان میدهد)
3. مشخص کردن طول یا همان تعداد عناصر آرایه با استفاده از متد len
a =np.array(["Matlab","Python","C++","Java"])
len(a)
خروجی 👇
4
انواع متد های numpy
1. یافتن اعضای مشترک بین دو آرایه با استفاده از متد intersect1d
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
c=np.intersect1d(a,b)
print(c)
خروجی 👇
[2 4]
2. اتصال دو آرایه به یک دیگر با استفاده از متد concatenate
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.concatenate([a, b]))
خروجی 👇
[1 2 3 4 5 6]
3. مرتب کردن عناصر آرایه با متد sort
a= np.array([22, 14, 59, 30, 17, 443, 66, 89])
print(np.sort(a))
خروجی 👇
[ 14 17 22 30 59 66 89 443]
4. حذف یک عنصر از آرایه با استفاده از متد delete
a= np.array([1, 2, 3,4])
print(a)
a = np.delete(a, 1)
print(a)
خروجی 👇
[1 2 3 4]
[1 3 4]
5. تغییر شکل آرایه ها با استفاده از متد reshape
با استفاده از این متد می توانیم آرایه ها را به شکل های مختلفی تبدیل کنیم، مثلا می توانیم یک آرایه یک بعدی با 10 عنصر را به آرایه ای دو بعدی به شکل 5 در 2 که به صورت 5 ردیف و دوستون باشد تبدیل کنیم اما نمی توانیم آن را به شکل 5 در 5 تبدیل کنیم زیرا برای تبدیل آن به 25 عنصر نیاز داریم.
تغییر آرایه یک بعدی به دو بعدی در این مورد عدد 2 تعداد سطرها را مشخص می کند و قرار دادن عدد 1- باعث تعیین خودکار تعداد ستون ها می شود.
a = np.arange(10)
print(a)
b=a.reshape(2, -1)
print(b)
خروجی 👇
[0 1 2 3 4 5 6 7 8 9]
[[0 1 2 3 4]
[5 6 7 8 9]]
6. اضافه کردن عنصر به آرایه با استفاده از متد append
a = np.array(["acer","Lenovo","ASUS","DELL"])
b = np.append (a, ["Apple","HP"])
print(b)
خروجی 👇
['acer' 'Lenovo' 'ASUS' 'DELL' 'Apple' 'HP']
دیدگاهتان را بنویسید