کتابخانه NumPy یکی از ابزارهای پایهای و حیاتی برای محاسبات علمی به حساب میآید؛ بنابراین اگر قصد دارید با پایتون وارد دنیای جذاب علم داده شوید، یادگیری این کتابخانه از نان شب هم برایتان واجبتر است! برگه تقلب Numpy (نامپای) دقیقاً برای همین اینجاست تا مسیر را برای شما هموارتر کند.
نامپای یک جایگزین بینظیر و قدرتمند برای لیستهای ساده پایتون است. چرا؟ چون آرایههای NumPy فضای کمتری اشغال میکنند، سرعت خواندن و نوشتن دادهها در آنها بسیار بالاتر است و در نهایت، کار با آنها بهمراتب راحتتر و بهینهتر از لیستهای معمولی در میآید.
علاوه بر این، NumPy پایهگذار و هسته مرکزی بسیاری از کتابخانههای مهم دیگر در زمینه مدیریت داده و یادگیری ماشین است که احتمالاً اسم آنها به گوشتان خورده؛ ابزارهایی مثل Pandas، Scikit-Learn و SciPy:
- کتابخانه مدیریت داده Pandas دقیقاً روی دوش NumPy سوار شده است، با این تفاوت که به جای آرایههای ساده، از دو ساختار دادهای جذابتر یعنی Series و DataFrames استفاده میکند.
- کتابخانه SciPy هم بر پایه NumPy توسعه یافته تا مجموعهای غنی از توابع کاربردی برای کار با آرایههای نامپای در اختیارتان قرار دهد.
- و در نهایت، کتابخانه معروف یادگیری ماشین یعنی Scikit-Learn نه تنها از NumPy، بلکه از SciPy و Matplotlib هم به عنوان زیرساخت خود استفاده میکند.
همانطور که میبینید، یادگیری این کتابخانه پایتون یک «باید» است. وقتی قلق کار با NumPy دستتان بیاید، درک بقیه ابزارهای علم داده پایتون برایتان مثل آب خوردن میشود.
با این وجود، NumPy هم مثل هر کتابخانه تخصصی دیگری ممکن است در نگاه اول کمی ترسناک و پیچیده به نظر برسد. اما جای نگرانی نیست! قرار است با هم مفاهیم پایهای که برای شروع تحلیل داده با این کتابخانه نیاز دارید را مرور کنیم.

هدف ما از تهیه این برگه تقلب Numpy این است که یک دید کلی و سریع از تمام قابلیتهای شگفتانگیز این کتابخانه به شما بدهیم.
پیشنهاد میکنیم این برگه تقلب را همیشه دم دستتان نگه دارید. این راهنما تمام مفاهیم اولیه و ضروری NumPy را پوشش میدهد؛ از یک معرفی کوتاه درباره ساختار آرایهها گرفته تا مباحث مهمی مثل نحوه ساخت آرایه، مدیریت ورودی/خروجی (I/O)، بررسی و ارزیابی آرایهها، عملیات ریاضی، کپی گرفتن، مرتبسازی، انتخاب عناصر و تغییر شکل آنها.
آرایههای NumPy به قدری کاربردی هستند که معمولاً به لیستهای پایتون ترجیح داده میشوند و خیلی زود متوجه میشوید که نحوه انتخاب عناصر در آنها، شباهت زیادی به همان لیستهای آشنای پایتون دارد.
برگه تقلب Numpy
کتابخانه NumPy قلب تپنده محاسبات علمی در پایتون است. این ابزار قدرتمند، یک شی آرایه چندبعدی با کارایی بسیار بالا و مجموعهای از ابزارها برای کار با این آرایهها در اختیارتان میگذارد.
برای شروع، کافیست آن را با دستور زیر ایمپورت کنید:
import numpy as np
آرایههای Numpy

ساخت آرایهها
a = np.array([1,2,3]) b = np.array([(1.5,2,3), (4,5,6)], dtype = float) c = np.array([[(1.5,2,3), (4,5,6)],[(3,2,1), (4,5,6)]], dtype = float)
Placeholder های اولیه (مقادیر اولیه پیشفرض)
np.zeros((3,4)) #Create an array of zeros np.ones((2,3,4),dtype=np.int16) #Create an array of ones d = np.arange(10,25,5)#Create an array of evenly spaced values (step value) np.linspace(0,2,9) #Create an array of evenlyspaced values (number of samples) e = np.full((2,2),7)#Create a constant array f = np.eye(2) #Create a 2X2 identity matrix np.random.random((2,2)) #Create an array with random values np.empty((3,2)) #Create an empty array
ورودی/خروجی (I/O)
ذخیره و بارگذاری دادهها روی دیسک
np.save('my_array' , a)
np.savez( 'array.npz', a, b)
np.load( 'my_array.npy')
ذخیره و بارگذاری فایلهای متنی
np.loadtxt("myfile.txt")
np.genfromtxt("my_file.csv", delimiter= ',')
np.savetxt( "myarray.txt", a, delimiter= " ")
درخواست راهنمایی (Help)
np.info(np.ndarray.dtype)
بررسی و شناخت آرایهها
a.shape #Array dimensions len(a)#Length of array b.ndim #Number of array dimensions e.size #Number of array elements b.dtype #Data type of array elements b.dtype.name #Name of data type b.astype(int). #Convert an array to a different type
انواع داده (Data Types)
np.int64 #Signed 64-bit integer types np.float32. #Standard double-precision floating point np.complex. #Complex numbers represented by 128 floats np.bool #Boolean type storing TRUE and FALSE values np.object #Python object type np.string_ #Fixed-length string type np.unicode_ #Fixed-length unicode type
ریاضیات در آرایهها
عملیات پایهای ریاضی
g = a - b. #Subtraction array([[-0.5,0. ,0.], [-3. , -3. , -3. ]]) np.subtract(a,b) #Subtraction b + a #Addition array([[ 2.5, 4. , 6.],[5. ,7. ,9. ]]) np.add(b,a) #Addition a/b #Division array([[0.66666667,1. ,1.],[0.25 ,0.4 ,0.5 ]]) np.divide(a,b) #Division a * b #Multiplication array([[1.5, 4. ,9.],[ 4. , 10. , 18. ]]) np.multiply(a,b) #Multiplication np.exp(b) #Exponentiation np.sqrt(b) #Square root np.sin(a) #Print sines of an array np.cos(b) #Elementwise cosine np.log(a)#Elementwise natural logarithm e.dot(f) #Dot product array([[7.,7.],[7.,7.]])
مقایسه عناصر
a == b #Elementwise comparison
array([[False , True, True],
[ False,False ,False ]], dtype=bool)
a< 2 #Elementwise comparison
array([True, False, False], dtype=bool)
np.array_equal(a, b) #Arraywise comparison
کپی کردن آرایهها
h = a.view()#Create a view of the array with the same data np.copy(a) #Create a copy of the array h = a.copy() #Create a deep copy of the array
مرتبسازی (Sorting) آرایهها
a.sort() #Sort an array c.sort(axis=0) #Sort the elements of an array's axis
زیرمجموعهگیری، برشدهی و اندیسگذاری
انتخاب عناصر (Subsetting)
a[2] #Select the element at the 2nd index 3 b[1,2] #Select the element at row 1 column 2(equivalent to b[1][2]) 6.0
برشدهی (Slicing)
a[0:2]#Select items at index 0 and 1 array([1, 2]) b[0:2,1] #Select items at rows 0 and 1 in column 1 array([ 2.,5.]) b[:1] #Select all items at row0(equivalent to b[0:1, :]) array([[1.5, 2., 3.]]) c[1,...] #Same as[1,:,:] array([[[ 3., 2.,1.],[ 4.,5., 6.]]]) a[ : : -1] #Reversed array a array([3, 2, 1])
اندیسگذاری بولی (Boolean Indexing)
a[a<2] #Select elements from a less than 2 array([1])
اندیسگذاری فانتزی (Fancy Indexing)
b[[1,0,1, 0],[0,1, 2, 0]] #Select elements(1,0),(0,1),(1,2) and(0,0) array([ 4. , 2. , 6. ,1.5]) b[[1,0,1, 0]][:,[0,1,2,0]] #Select a subset of the matrix’s rows and columns array([[ 4. ,5. , 6. , 4.],[1.5, 2. , 3. ,1.5],[ 4. ,5. , 6. , 4.],[1.5, 2. , 3. ,1.5]])
دستکاری و تغییر آرایهها
ترانهنهاده کردن (Transpose)
i = np.transpose(b) #Permute array dimensions i.T #Permute array dimensions
تغییر شکل آرایه (Reshaping)
b.ravel() #Flatten the array g.reshape(3, -2) #Reshape, but don’t change data
افزودن و حذف عناصر
h.resize((2,6)) #Return a new arraywith shape(2,6) np.append(h,g) #Append items to an array np.insert(a,1,5) #Insert items in an array np.delete(a,[1]) #Delete items from an array
ترکیب کردن آرایهها
np.concatenate((a,d),axis=0) #Concatenate arrays array([1, 2, 3, 10, 15, 20]) np.vstack((a,b) #Stack arrays vertically(row wise) array([[1. , 2. , 3.],[1.5, 2. , 3.],[ 4. ,5. , 6. ]]) np.r_[e,f] #Stack arrays vertically(row wise) np.hstack((e,f)) #Stack arrays horizontally(column wise) array([[7.,7.,1.,0.],[7.,7.,0.,1.]]) np.column_stack((a,d)) #Create stacked column wise arrays array([[1, 10],[ 2, 15],[ 3, 20]]) np.c_[a,d] #Create stacked column wise arrays
تقسیم کردن آرایهها
np.hsplit(a,3) #Split the array horizontally at the 3rd index [array([1]),array([2]),array([3])] np.vsplit(c,2) #Split the array vertically at the 2nd index [array([[[ 1.5, 2. ,1.],[ 4. ,5. , 6. ]]]), array([[[ 3., 2., 3.],[ 4.,5., 6.]]])]
این برگه تقلب فقط نقطه شروع است!
داشتن این برگه تقلب NumPy قطعاً به شما کمک میکند تا کدهای پایهای را خیلی سریعتر بنویسید؛ اما فراموش نکنید که تسلط بر ابزارها تنها بخش کوچکی از مسیر جذاب یک متخصص داده است. برای اینکه بتوانید با دادههای واقعی دستوپنجه نرم کنید، الگوهای پنهان را بیرون بکشید و مدلهای قدرتمند هوش مصنوعی بسازید، به یک نقشه راه اصولی نیاز دارید تا قطعات این پازل بزرگ را درست در کنار هم قرار دهید.
اگر واقعاً آمادهاید تا پایتون، محاسبات علمی و الگوریتمهای هوش مصنوعی را به شکلی کاربردی و عمیق یاد بگیرید، پیشنهاد میکنیم فرصت شرکت در دوره جامع علم داده با پایتون را از دست ندهید. در این دوره، مفاهیم تئوری را مستقیماً در قالب پروژههای واقعی و شبیهسازیشدهی بازار کار پیادهسازی خواهید کرد:
- آموزش گامبهگام و پروژه محور پایتون، NumPy، Pandas و کتابخانههای یادگیری ماشین و یادگیری عمیق
- انجام پروژههای واقعی برای ساخت یک رزومه حرفهای و قوی جهت ورود به بازار کار
- پوشش کامل و به زبان سادهی تمام مفاهیم ریاضی و آمار موردنیاز در علم داده

