کتابخانه Numpy

کتابخانه Numpy:اگر شما به دنبال انجام هر گونه ریاضیات پیشرفته به هر یک از مجموعه داده‌های خود هستید، پس باید کتابخانه اعداد را وارد کنید. به شدت در یادگیری عمیق و یادگیری ماشین استفاده می‌شود، این یک ضرورت مطلق برای هر الگوریتم و تجزیه و تحلیل سنگین محاسباتی است. آرایه‌های چند بعدی اعداد نیز مسائل پیچیده را به مراتب ساده‌تر از لیست‌های استاندارد می‌سازند.NumPy یک کتابخانه برای زبان برنامه نویسی پایتون (Python) است.با استفاده از این کتابخانه امکان استفاده از آرایه‌ها و ماتریس‌های بزرگ چند بعدی فراهم می‌شود. هم‌چنین می‌توان از تابع‌های ریاضیاتی سطح بالا بر روی این آرایه‌ها استفاده کرد. پیش از این‌که این آموزش را مطالعه کنید، می‌بایست دست‌کم اندکی با زبان برنامه‌نویسی پایتون آشنایی داشته باشید.در پردازش هایی که بر روی داده ها انجام میشود,مانند پردازش تصاویر یا کلیپ های صوتی یا پردازش های دیگر , معمولا داده ها را به شکل آرایه ای از اعداد در نظر میگیرند.برای مثال عکس های دیجیتال را میتوان یک آرایه دو بعدی در نظر گرفت که هر خانه آرایه یک پیکسل از تصویر را نشان میدهد که مقدار رنگ را در آن خانه نمایش میدهد.چرا از کتابخانه Numpy استفاده کنیم؟1. این کتابخانه برای ذخیره داده ها از حافظه خیلی کمتری استفاده می کند.2. این کتابخانه بسیار سریع است. و این همان موضوعی است که آرایه های Numpy را از لیست های پایتونی متمایز میکند. آرایه های این کتابخانه تا 50 برابر سریع تر از لیست های پایتونی هستند.3. در Numpyبه راحتی میتوانید یک ماتریس n*n بسازید که با آن زیاد سر و کار دارید.4. در این کتابخانه برای تمام محاسبات ماتریسی , تابع تعریف شده که با استفاده از آنها به راحتی میتوانید محاسباتتان را انجام دهید و اصلا نیازی به نوشتن کد های طولانی نیست.برای استفاده از کتابخانه Numpy آن را با کلمه کلیدی import در برنامه های خود وارد کنید.اما برای سهولت بیشتر کلمه کلیدی as باعث می شود بتوانیم از نامی که بعد از آن آمده به جای نام کتابخانه استفاده کنیم.import numpy as npتوابع مهم و کاربردی Numpy::arrayساخت آرایه مورد نظر. به عنوان ورودی این تابع میتوانید list یا tuple یا هر شیئ آرایه مانند دیگری بفرستید.A= np.array([1,2,3,4,5]) print(A):output[1,2,3,4,5]:fuulپر کردن همه خانه های یک آرایه با عددی مشخص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]]:insertدرج عنصر در ایندکس مشخص درآرایه. پارامتر های ورودی این آرایه به ترتیب نام آرایه, ایندکس درج و مقدار است.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]:deleteحذف عنصر از آرایه. پارامتر های ورودی این تابع نام آرایه و ایندکس حذف.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]:typeمشاهده نوع آبجکت ها.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. ]:astype('datatype')تغییر نوع عناصر یک آرایه. خروجی این تابع یک آرایه جدید است, پس یک متغیر جدا برای آن در نظر بگیرید.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:indexدسترسی به عناصر یک آرایه.B= np.array([1,2,3,4]) print(B[0] + B[2] * B[3] / B[1]):output7.0:Slicingدسترسی به اعضا یک آرایه از یک ایندکس مشخص تا ایندکس دیگر.میتوانید با نوشتن [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]:viewکپی گرفتن از آرایه. اما در نظر داشته باشید که اگر بعد از آن تغییری در آرایه اصلی ایجاد کنید آن تغییر روی آرایه کپی نیز اعمال میشود.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):output1234567:ndenumerateمشاهده ایندکس هر عضو از آرایه در کنارش, هنگام پیمایش.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:concatenateوصل کردن چند آرایه به یکدیگر و تبدیل آن ها به یک آرایه. این تابع یک آرگومان ورودی 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]:arry_splitشکستن یک آرایه به چند آرایه دیگر. آرگومان دوم این تابع تعداد (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]:where (element or …)انجام عملیات جست و جو در آرایه.A= np.array([1,2,3,4,5,4,7]) x = np.where(A == 4) print(x):output(,array([3, 5])):searchsorted(array, element, side)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):output21:sortمرتب سازی آرایه.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]:reshapeبهتر است برای ساخت آرایه سه بعدی به بالا, ابتدا یک آرایه تک بعدی بسازید و سپس با این متد, بعد آن را تغییر دهید.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]:ndimچک کردن چند بعدی بودن یک آرایه.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):output0123:shapeتعداد عناصر در هر بعد آرایه را نمایش می دهد.A= np.array([1,2,3,4,5,6,7,8,9,10,11,12]) print(A.shape):output(,12):stackتبدیل آرایه های یک بعدی به یک آرایه چند بعدی.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]معرفی ماژول random از کتابخانه numpy:from numpy import random:randایجاد یک عدد رندوم اعشاری بین 0 تا 1import numpy as np A= np.random.rand() print(A):output0.6320352681869909:randint (range, n)ایجاد یک آرایه 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