اگر شما به دنبال انجام هر گونه ریاضیات پیشرفته به هر یک از مجموعه دادههای خود هستید، پس باید کتابخانه اعداد را وارد کنید. به شدت در یادگیری عمیق و یادگیری ماشین استفاده میشود، این یک ضرورت مطلق برای هر الگوریتم و تجزیه و تحلیل سنگین محاسباتی است. آرایههای چند بعدی اعداد نیز مسائل پیچیده را به مراتب سادهتر از لیستهای استاندارد میسازند.
NumPy یک کتابخانه برای زبان برنامه نویسی پایتون (Python) است.با استفاده از این کتابخانه امکان استفاده از آرایهها و ماتریسهای بزرگ چند بعدی فراهم میشود. همچنین میتوان از تابعهای ریاضیاتی سطح بالا بر روی این آرایهها استفاده کرد. پیش از اینکه این آموزش را مطالعه کنید، میبایست دستکم اندکی با زبان برنامهنویسی پایتون آشنایی داشته باشید.
در پردازش هایی که بر روی داده ها انجام میشود,مانند پردازش تصاویر یا کلیپ های صوتی یا پردازش های دیگر , معمولا داده ها را به شکل آرایه ای از اعداد در نظر میگیرند.برای مثال عکس های دیجیتال را میتوان یک آرایه دو بعدی در نظر گرفت که هر خانه آرایه یک پیکسل از تصویر را نشان میدهد که مقدار رنگ را در آن خانه نمایش میدهد.
1. این کتابخانه برای ذخیره داده ها از حافظه خیلی کمتری استفاده می کند.
2. این کتابخانه بسیار سریع است. و این همان موضوعی است که آرایه های Numpy را از لیست های پایتونی متمایز میکند. آرایه های این کتابخانه تا 50 برابر سریع تر از لیست های پایتونی هستند.
3. در Numpyبه راحتی میتوانید یک ماتریس n*n بسازید که با آن زیاد سر و کار دارید.
4. در این کتابخانه برای تمام محاسبات ماتریسی , تابع تعریف شده که با استفاده از آنها به راحتی میتوانید محاسباتتان را انجام دهید و اصلا نیازی به نوشتن کد های طولانی نیست.
برای استفاده از کتابخانه Numpy آن را با کلمه کلیدی import در برنامه های خود وارد کنید.اما برای سهولت بیشتر کلمه کلیدی as باعث می شود بتوانیم از نامی که بعد از آن آمده به جای نام کتابخانه استفاده کنیم.
import numpy as np
ساخت آرایه مورد نظر. به عنوان ورودی این تابع میتوانید list یا tuple یا هر شیئ آرایه مانند دیگری بفرستید.
A= np.array([1,2,3,4,5]) print(A)
:output
[1,2,3,4,5]
پر کردن همه خانه های یک آرایه با عددی مشخص
B= np.full((4,2),2.3) print(B)
:output
[[2.3 2.3]
[2.3 2.3]
[2.3 2.3]
[2.3 2.3]]
درج عنصر در ایندکس مشخص درآرایه. پارامتر های ورودی این آرایه به ترتیب نام آرایه, ایندکس درج و مقدار است.
X= np.array([1,2,3,4,5,6,7,8,9,10]) inserted = np.insert(X,2,20) print(X) print(inserted)
:output
[1,2,3,4,5,6,7,8,9,10]
[1,2,20,3,4,5,6,7,8,9,10]
حذف عنصر از آرایه. پارامتر های ورودی این تابع نام آرایه و ایندکس حذف.
the_array = np.array([[1, 2], [3, 4]]) print(the_array) the_array = np.delete(the_array, [1, 2]) print(the_array)
:output
[[1 2]
[3 4]]
[1,4]
مشاهده نوع آبجکت ها.
A= np.array([1,2,3,4,5,6,7,8,9,10]) print(type(A))
:output
<class 'numpy.ndarray'>
:dtype
یک ویژگی هست برای مشاهده نوع عناصر موجود در یک آرایه.
arrChar = np.array(['a','b','c']) arrString = np.array(['maryam','danial','arshia']) arrFloat = np.array([1.2,3.2,1.0]) print(arrChar) print(arrString) print(arrFloat)
:output
['a' 'b' 'c']
['maryam' 'danial' 'arshia']
[1.2 3.2 1. ]
X= np.array([1.1,2.1,3.1]) newarray = arr.astype('i') print(X) print(X.dtype) print(newarray) print(newarray.dtype)
:output
[1.1 2.1 3.1]
float64
[1 2 3]
int32
دسترسی به عناصر یک آرایه.
B= np.array([1,2,3,4]) print(B[0] + B[2] * B[3] / B[1])
:output
7.0
دسترسی به اعضا یک آرایه از یک ایندکس مشخص تا ایندکس دیگر.
میتوانید با نوشتن [start : end : step] رو به روی اسم آرایه مورد نظر این کار را انجام دهید
توجه داشته باشید:
درصورت ننوشتن start , صفر در نظر گرفته میشود.
درصورت ننوشتن end , سایز آرایه در نظر گرفته میشود.
درصورت ننوشتن step , یک درنظر گرفته میشود.
X= np.array([1,2,3,4,5,6,7]) print(X[1:5:2]) print(X[0:5]) print(X[4:]) print(X[:3])
:output
[2 4]
[1 2 3 4 5]
[5 6 7]
[1 2 3]
کپی گرفتن از آرایه. اما در نظر داشته باشید که اگر بعد از آن تغییری در آرایه اصلی ایجاد کنید آن تغییر روی آرایه کپی نیز اعمال میشود.
A= np.array([1,2,3,4,5,6,7]) x= A.view A[0] = 42 print(A) print(x)
:output
[42 2 3 4 5 6 7]
<built-in method view of numpy.ndarray object at 0x7f216f367870>
:for in
پیمایش روی اعضا آرایه.
A= np.array([1,2,3,4,5,6,7]) for x in A: print(x)
:output
1
2
3
4
5
6
7
مشاهده ایندکس هر عضو از آرایه در کنارش, هنگام پیمایش.
A= np.array([1,2,3,4,5,6,7]) for idx, x in np.ndenumerate(A): print(idx,x)
:output
(0,) 1
(1,) 2
(2,) 3
(3,) 4
(4,) 5
(5,) 6
(6,) 7
وصل کردن چند آرایه به یکدیگر و تبدیل آن ها به یک آرایه. این تابع یک آرگومان ورودی axis دارد که در قسمت توابع آرایه دو بعدی به توضیح آن خواهیم پرداخت.
A= np.array([1,2,3]) B= np.array([4,5,6]) C= np.concatenate((A,B)) print(C)
:output
[1,2,3,4,5,6]
شکستن یک آرایه به چند آرایه دیگر. آرگومان دوم این تابع تعداد (n)آرایه هایی که میخواهید آرایه اصلی به آن تقسیم شود را مشخص میکند.
A= np.array([1,2,3,4,5,6,7]) newarr = np.array_split(A,3) print(newarr) print(newarr[2])
:output
[array([1, 2, 3]), array([4, 5]), array([6, 7])]
[6 7]
انجام عملیات جست و جو در آرایه.
A= np.array([1,2,3,4,5,4,7]) x = np.where(A == 4) print(x)
:output
(,array([3, 5]))
A= np.array([6,7,8,9]) x= np.searchsorted(A , 7 , side='right') y= np.searchsorted(A , 7 , side='left') print(x) print(y)
:output
2
1
مرتب سازی آرایه.
num=np.array([3 , 2 , 0 ,1]) string = np.array(['banana','cherry','apple']) boolean = np.array([True,False,True]) print(np.sort(num)) print(np.sort(string )) print(np.sort(boolean ))
:output
[0 1 2 3]
['apple' 'banana' 'cherry']
[False True True]
:Filtering
این امر با استفاده از یک آرایه بولین صورت میگیرد.شما با استفاده از یک آرایه boolean, تمامی عانصر آرایه که ایندکس متناظر آنها در آرایه بولین true است را بدست می آورید. یعنی آرایه خود را فیلتر می کنید.
A= np.array([3 , 2 , 0 ,1]) x= [True,False,True,False] filteredarr = A[x] print(filteredarr)
:output
[3 0]
A= np.array([[1,2,3],[4,5,6]]) print(A)
:output
[3 2 1]]
[[6 5 4]
A= np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]]) print(A)
:output
[3 2 1]]]
[[6 5 4]
[3 2 1]]
[[[6 5 4]
بهتر است برای ساخت آرایه سه بعدی به بالا, ابتدا یک آرایه تک بعدی بسازید و سپس با این متد, بعد آن را تغییر دهید.
A= np.array([1,2,3,4,5,6,7,8,9,10,11,12]) newarr1 = A.reshape(4,3) newarr2 = A.reshape(2,3,2) print(newarr1) print(newarr2)
:output
[3 2 1]]
[6 5 4]
[9 8 7]
[[12 11 10]
[2 1]]]
[4 3]
[[6 5]
[8 7]]
[10 9]
[[[12 11]
چک کردن چند بعدی بودن یک آرایه.
A= np.array(42) B= np.array([1,2,3,4,5,6,7,8,9,10,11,12]) C= np.array([[1,2,3],[4,5,6]]) D= np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]]) print(A.ndim) print(B.ndim) print(C.ndim) print(D.ndim)
:output
0
1
2
3
تعداد عناصر در هر بعد آرایه را نمایش می دهد.
A= np.array([1,2,3,4,5,6,7,8,9,10,11,12]) print(A.shape)
:output
(,12)
تبدیل آرایه های یک بعدی به یک آرایه چند بعدی.
A= np.array([1,2,3]) B= np.array([4,5,6]) C= np.stack((A,B), axis=1) newarr = np.stack((A,B),axis=0) print(C) print(newarr)
:output
[4 1]]
[5 2]
[[ 6 3]
[3 2 1]]
[[6 5 4]
from numpy import random
ایجاد یک عدد رندوم اعشاری بین 0 تا 1
import numpy as np A= np.random.rand() print(A)
:output
0.6320352681869909
ایجاد یک آرایه n بعدی با عناصر بین 0 تا range.
x = np.random.randint(100,size=(3,5)) print(x)
:output
[7 47 9 67 18]]
[67 21 4 12 39]
[[2 64 50 50 67]
برای اطلاعات بیشتر میتونید به سایت iran-ai.ir مراجعه کنید.
#Iran-ai