نامپای
نامپای (به انگلیسی: NumPy) یک بستهٔ نرمافزاری قابل افزودن به پایتون است که کاربرد اصلیاش در مقاصد علمی و برای کار با اعداد است. پایتون به صورت پیشفرض تنها از آرایهها و متغیرها برای عملیات ریاضی ساده پشتیبانی میکند. بستهٔ نامپای ویژهٔ کار با اعداد از راه ماتریسها و آرایههای چندبعدی طراحی شده است. از ویژگیهای آرایهها در نامپای این است که میتوان اندازهٔ آنها را به صورت پویا تغییر داد که این امر به افزایش سرعت برنامهنویسی کمک میکند. نامپای را میتوان بستهٔ بنیادی پایتون برای محاسبات علمی دانست، این بسته افزون بر فراهمآوردن قابلیت کار با آرایههای اِن-بعدی، عملگرهای درایه به درایه و عملگرهای اصلی جبر خطی، قابلیت لفافپیچی کدهای سی، سی++ و فورترن را ممکن میسازد.
نویسنده(های) اصلی | تراویس اُلیفانت |
---|---|
توسعهدهنده(ها) | پروژهٔ مشارکتی |
انتشار ابتدایی | ۱۹۹۵ |
انتشار پایدار | ۱٫۱۸٫۵
۴ ژوئن ۲۰۲۰ |
مخزن | |
سیستمعامل | چندسکویی |
گونه | فهرست نرمافزارهای محاسبات عددی |
پروانه | پروانه بیاسدی |
وبگاه |
با استفاده از آرایههای انبعدی (ndarray) نامپای، میتوان بر محدودیتهای لیستهای پایتون (list) که تنها با استفاده از حلقههای تکرار میتوان بر روی آنها کار کرد، غلبه نمود و بازدهی را بالا برد. تنها محدودیت مهم آرایههای اِنبعدی نامپای در مقایسه با لیستهای پایتون در این است که باید حتماً نوع دادههای موجود در درایههای آن یکسان باشند. در مقابل سرعت انجام عملیاتی که با استفاده از آرایههای انبعدی اجرا میشود بیشتر است.
نصب
امکان نصب نامپای از راه دریافت کد متن آن و کامپایل دستی وجود دارد، اما برای این کار کاربر باید با مراحل کامپایل برنامه از متن آشنایی کامل داشته باشد. از سادهترین راهها نصب نامپای میتوان به استفاده از بستههای از پیش کامپایلشدهٔ توزیع پایتون انتوت و اکتیو پایتون اشاره کرد که هر دوی آنها در سه بستر ویندوز، مک و لینوکس قابل نصب هستند و هر دو دارای نسخهٔ رایگان هستند. کاربران مکپورتز و توزیعهای مختلف لینوکس میتوانند نامپای را از راه مدیر بسته نصب کنند، اما نصب نامپای در ویندوز با توجه به پیچیدگی فرایند کامپایل ممکن است کمی مشکل باشد که برای این منظور یک نصب باینری کامپایلشده به نام python(x,y) ویژهٔ ویندوز موجود است.
مثالها
- ساخت آرایه
>>> import numpy as np
>>> x = np.array([1, 2, 3])
>>> x
array([1, 2, 3])
>>> y = np.arange(10) # یک آرایه را برمیگرداند
>>> y
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
- عملیات مقدماتی
>>> a = np.array([1, 2, 3, 6])
>>> b = np.linspace(0, 2, 4) # بین اعداد ۰ تا ۲ با فاصلههای یکسان یک آرایه با چهار عضو ایجاد میکند.
>>> c = a - b
>>> c
array([ 1. , 1.33333333, 1.66666667, 4. ])
>>> a**2
array([ 1, 4, 9, 36])
- توابع عمومی
>>> a = np.linspace(-np.pi, np.pi, 100)
>>> b = np.sin(a)
>>> c = np.cos(a)
- جبر خطی
>>> from numpy.random import rand
>>> from numpy.linalg import solve, inv
>>> a = np.array([[1, 2, 3], [3, 4, 6.7], [5, 9.0, 5]])
# ترانهاده ماتریس
>>> a.transpose()
array([[1. , 3. , 5. ],
[ 2. , 4. , 9. ],
[ 3. , 6.7, 5.]])
# معکوس ماتریس
>>> inv(a)
array([[-2.27683616, 0.96045198, 0.07909605],
[ 1.04519774, -0.56497175, 0.1299435 ],
[ 0.39548023, 0.05649718, -0.11299435]])
>>> b = np.array([3, 2, 1])
# ax=b حل معادله
>>> solve(a, b)
array([-4.83050847, 2.13559322, 1.18644068])
# ماتریس ۳ در ۳ اعداد تصادفی
>>> c = rand(3, 3)
>>> c
array([[3.98732789, 2.47702609, 4.71167924],
[ 9.24410671, 5.5240412 , 10.6468792 ],
[ 10.38136661, 8.44968437, 15.17639591]])
# ضرب ماتریسی
>>> np.dot(a, c)
array([[3.98732789, 2.47702609, 4.71167924],
[ 9.24410671, 5.5240412 , 10.6468792 ],
[ 10.38136661, 8.44968437, 15.17639591]])
# ضرب ماتریسی (این امکان برای پایتون ۳٫۵ و نامپای ۱٫۱۰ به بعد فعال است)
>>> a @ c
array([[3.98732789, 2.47702609, 4.71167924],
[ 9.24410671, 5.5240412 , 10.6468792 ],
[ 10.38136661, 8.44968437, 15.17639591]])
سایپای
سایپای یک بستهٔ علمی دیگر برای پایتون است که مبتنی بر نامپای نوشته شده و اجازهٔ انجام عملیات ریاضی پیشرفته مانند انتگرالگیری، حل معادلات دیفرانسیل معمولی، توابع ویژه، بهینهسازی و بسیاری موارد دیگر را میدهد.
جستارهای وابسته
واژهنامه
منابع
- Bressert, Eli (2012). SciPy and NumPy: An Overview for Developers (به انگلیسی). O'Reilly Media.