«نامپای» (NumPy) بستهای برای انجام محاسبات علمی در زبان پایتون است. نامپای از آرایههای چندبعدی به خوبی پشتیبانی میکند که در ادامه این مقاله در مورد آنها به تفصیل صحبت خواهیم کرد. در این مطلب با 12 عملگر NumPy برای افراد مبتدی آشنا میشوید.
چنانکه اشاره کردیم نامپای که اختصاری برای عبارت «پایتون عددی» (Numerical Python) است، یک کتابخانه زبان برنامهنویسی پایتون برای کار با آرایهها و اجرای انواع مختلفی از عملیات ریاضی روی اعداد و آرایهها محسوب میشود. نامپای یک کتابخانه ضروری برای اجرای محاسبات علمی در پایتون است و در اغلب موارد به همراه دیگر کتابخانههای مرتبط با علوم داده پایتون مانند SciPy ،Pandas و Matplotlib استفاده میشود.
در ادامه این مطلب 12 عملگر نامپای ارائه شدهاند که شما میتوانید آنها را مستقیماً در مفسر پایتون خود وارد کرده و عملکردشان را بررسی کنید. همچنین میتوانید در این صفحه ریپازیتوری گیتهاب (+) به نتبوک پایتونی دسترسی داشته باشید که همه کدها را یکجا ارائه کرده است.
عملگر numpy برای اپمیورت نامپای با عنوان np و مشاهده شماره نسخه
برای ایمپورت کردن هر کتابخانهای در پایتون باید از کلیدواژه import استفاده کنید. نامپای به طور معمول با نام مستعار np ایمپورت میشود.
به این ترتیب میتوانید به جای استفاده از کلمه numpy با بهرهگیری از عبارت دو حرفی np به این پکیج اشاره کنید.
import numpy as np
print(np.__version__)
خروجی کد فوق عددی مشابه زیر است.
1.20.1
ساخت شیء ndarray با نامپای
شیء آرایه در نامپای به صورت ndarray شناخته میشود. برای ساخت شیء ndarray در نامپای میتوانید از متد ()array بهره بگیرید. این متد یک لیست، چندتایی (tuple) یا یک شیء شبه آرایه میگیرد. به مثال زیر توجه کنید تا با روش ساخت یک آرایه نامپای از یک چندتایی آشنا شوید.
import numpy as np
print(np.__version__)
خروجی کد فوق چنین است:
array([23، 32، 65، 85])
در مثال زیر یک آرایه نامپای را از روی یک لیست در پایتون ایجاد میکنیم.
arrObj = np.array([43، 23، 75، 15])
arrObj
خروجی کد فوق چنین است.
array([43، 23، 75، 15])
ساخت آرایه های نامپای صفر تا n بعدی
در نامپای میتوانید آرایهای با هر تعداد بعد که دوست دارید بسازید. برای نمونه برای ساخت آرایه 0-بعدی با استفاده از عملگر numpy به صورت زیر عمل میکنیم.
آرایههای صفربعدی
arrObj = np.array([43، 23، 75، 15])
arrObj
خروجی کد فوق چنین است.
array(21)
آرایههای یکبعدی
برای ساخت آرایه یک بعدی کافی است از آرایههای 0-بعدی به عنوان عناصر آرایه 1-بعدی بهره بگیریم. به مثال زیر توجه کنید.
arrObj = np.array([43، 23، 75، 15])
arrObj
خروجی
array([43، 23، 75، 15])
آرایههای دوبعدی
برای ساخت آرایه دو بعدی کافی است از آرایههای 1-بعدی به عنوان عناصر آرایه 2-بعدی بهره بگیریم. به مثال زیر توجه کنید.
arrObj = np.array([[12، 43، 21]، [67، 32، 98]])
arrObj
خروجی
array([[12, 43, 21], [67, 32, 98]])
آرایههای سهبعدی
برای ساخت آرایه سه بعدی کافی است از آرایههای 2-بعدی به عنوان عناصر آرایه 3-بعدی بهره بگیریم. به مثال زیر توجه کنید.
arrObj = np.array([[[23, 45, 22], [45, 76, 23]], [[67, 23, 56], [12, 76, 63]]])
arrObj
خروجی:
array([[[23, 45, 22],
[45, 76, 23]],
[[67, 23, 56],
[12, 76, 63]]])
آرایههای nبعدی
با استفاده از آرگومان ndmin میتوانید آرایههایی با ابعاد دلخواه بسازید.
arrObj = np.array([23، 22، 65، 44]، ndmin=5)
arrObj
خروجی:
array([[[[[23، 22، 65، 44]]]]])
مطلب پیشنهادی برای مطالعه: برنامه نویسی پایتون (Python) با کتابخانه NumPy — به زبان ساده
شیوه بررسی بعد یک آرایه
برای مشاهده ابعاد یک آرایه میتوانید از خصوصیت ndmin به صورت زیر بهره بگیرید.
arrObj1 = np.array(21)
arrObj2 = np.array([43، 23، 75، 15])
arrObj3 = np.array([[12، 43، 21]، [67، 32، 98]])
arrObj4 = np.array([[[23، 45، 22]، [45، 76، 23]]، [[67، 23، 56]، [12، 76، 63]]])
print(arrObj1.ndim)
print(arrObj2.ndim)
print(arrObj3.ndim)
print(arrObj4.ndim)
خروجی:
0 1 2 3
شیوه دسترسی به عناصر آرایه های یک تا سه بعدی
برای دسترسی به هر عنصر یک آرایه میتوانید از اندیس آن عنصر بهره بگیرید. به این منظور باید از اعداد صحیح جدا شده با کاما استفاده کنید که نمایانگر اندیس هر بعد باشند.
arrObj1 = np.array([43، 23، 75، 15])
arrObj2 = np.array([[12، 43، 21]، [67، 32، 98]])
arrObj3 = np.array([[[23، 45، 22]، [45، 76، 23]]، [[67، 23، 56]، [12، 76، 63]]])
print(arrObj1[2])
print(arrObj2[0، 2])
print(arrObj3[0، 1، 2])
خروجی:
75 21 23
نکته: آرایههای نامپای از اندیسهای منفی نیز پشتیبانی میکنند.
شیوه بررسی نوع داده شیء آرایه نامپای
امکان بررسی نوع داده شیء آرایه نامپای با استفاده از مشخصه dtype وجود دارد.
به مثال زیر توجه کنید.
arrObj1 = np.array([1, 2, 3, 4])
arrObj2 = np.array([1.3, 6.8, 3.5, 9.2])
arrObj3 = np.array(['Welcome', 'to', 'MUO'])
print(arrObj1.dtype)
print(arrObj2.dtype)
print(arrObj3.dtype)
خروجی:
int32 float64نکته: نامپای از کارترهای زیر برای نمایش انواع داده داخلی خود بهره میگیرد.
- i — عدد صحیح (علامتدار)
- b — مقدار بولی
- O — شیء
- S — رشته
- u — عدد صحیح بیعلامت
- f — عدد اعشاری
- c — عدد مختلط
- m — تفاضل زمانی
- M — تاریخ و زمان
- U — رشته یونیکد
- V — داده خام (تهی)
تغییر نوع داده در یک آرایه نامپای
امکان تغییر دادن نوع داده یک آرایه نامپای با استفاده از متد astype(data_type) به عنوان یک عملگر numpy وجود دارد. این متد یک نوع داده به عنوان پارامتر میگیرد و یک کپی جدید از آرایه میسازد. امکان تعیین نوع داده با استفاده از کاراکترهایی مانند b برای مقدار بولی، I برای مقدار عدد صحیح، f برای مقدار اعشاری و غیره وجود دارد.
برای تبدیل یک آرایه عدد صحیح به آرایه اعشاری به صورت زیر عمل میکنیم.
arrObj = np.array([43، 23، 75، 15]) floatArr = arrObj.astype('f') floatArr
خروجی:
array([43.، 23.، 75.، 15.]، dtype=float32)برای تبدیل یک آرایه اعشاری به آرایه اعداد صحیح به صورت زیر عمل میکنیم.
arrObj = np.array([1.3, 6.8, 3.5, 9.2]) intArr = arrObj.astype('i') intArr
خروجی:
array([1، 6، 3، 9]، dtype=int32)کپی کردن یک آرایه نامپای به آرایه دیگر
برای کپی کردن یک آرای نامپای به آرایه دیگر از تابع ()np.copy کمک میگیریم. این تابع یک کپی آرایه از شیء مفروض به دست میدهد.
oldArr = np.array([43, 23, 75, 15]) newArr = np.copy(oldArr) newArr
خروجی
array([43، 23، 75، 15])مشاهده شکل یک آرایه نامپای
شکل یک آرایه نامپای به معنی تعداد عناصر در هر بعد آن است. برای یافتن شکل یک آرایه از خصوصیت shape آرایههای نامپای استفاده میکنیم. این خصوصیت یک چندتایی بازگشت میدهد که عناصر آن طول ابعاد متناظر آرایه است.
arrObj = np.array([[12, 43, 21], [67, 32, 98]]) arrObj.shape
خروجی:
(2، 3)تغییر دادن شکل یک آرایه
تغییر دادن شکل یک آرایه به معنی تغییر دادن ابعاد آن است. توجه کنید که امکان تغییر دادن یک آرایه به شکل دلخواه مقدور نیست. تعداد عناصر مورد نیاز برای تغییر دادن شکل یک آرایه باید در هر دو شکل مبدأ و مقصد یکسان باشند.
arrObj = np.array([43، 23، 75، 15، 34، 45]) reshapedArr = arrObj.reshape(2، 3) reshapedArr
خروجی:
array([[43، 23، 75]، [15، 34، 45]])مرتب سازی عناصر یک آرایه نامپای
برای مرتبسازی عناصر آرایههای نامپای از تابع ()numpy.sort بهره میگیریم. به مثالهای زیر توجه کنید.
- مثال: مرتبسازی آرایه یک بعدی از عناصر عدد صحیح
arrObj = np.array([43, 23, 75, 15]) np.sort(arrObj)
خروجی:
array([15، 23، 43، 75])
- مثال: مرتبسازی آرایه یک بعدی از عناصر رشتهای
arrObj = np.array(["Python", "JavaScript", "Solidity", "Golang"]) np.sort(arrObj)
خروجی:
array(['Golang'، 'JavaScript'، 'Python'، 'Solidity']، dtype='
- مثال: مرتبسازی آرایه دو بعدی از اعداد صحیح
arrObj = np.array([[12, 43, 21], [67, 32, 98]]) np.sort(arrObj)
خروجی:
array(['Golang'، 'JavaScript'، 'Python'، 'Solidity']، dtype='سخن پایانی
پایتون یکی از محبوبترین زبانهای برنامهنویسی دنیا محسوب میشود. این زبان در حوزههای مختلفی از قبیل توسعه وب، کاربردهای علمی و عددی، توسعه نرمافزار و حتی توسعه بازی مورد استفاده قرار میگیرد. از این رو بهتر است با متدها و تابعهای داخلی پایتون آشنا باشید تا بتوانید بهترین عملکرد را با آن تجربه کنید. در این مطلب تلاش کردیم تا شما را با انواع مختلفی از عملگر numpy که در زمان برنامهنویسی پایتون به کارتان خواهند آمد آشنا سازیم. به این ترتیب میتوانید کدهای کوتاهتری بنویسید و کارایی خود را افزایش دهید.