Mahdi Shabani
Mahdi Shabani
خواندن ۴ دقیقه·۳ سال پیش

کتابخانه 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])

:output
7.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)

:output
1
2
3
4
5
6
7

: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)

:output
2
1

: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)

:output
0
1
2
3

: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 تا 1

import numpy as np A= np.random.rand() print(A)

:output
0.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

یادگیری مشاینهوش مصنوعیnumpymachine learning
شاید از این پست‌ها خوشتان بیاید