نویسنده(های) اصلی | تراویس اُلیفانت |
---|---|
توسعهدهنده(ها) | پروژهٔ مشارکتی |
انتشار اولیه | ۱۹۹۵ |
انتشار پایدار | ۱٫۱۸٫۵
/ ۴ ژوئن ۲۰۲۰ |
مخزن | |
سیستمعامل | چندسکویی |
نوع | فهرست نرمافزارهای محاسبات عددی |
مجوز | پروانه بیاسدی |
وبگاه |
نامپای (به انگلیسی: 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]])
سایپای یک بستهٔ علمی دیگر برای پایتون است که مبتنی بر نامپای نوشته شده و اجازهٔ انجام عملیات ریاضی پیشرفته مانند انتگرالگیری، حل معادلات دیفرانسیل معمولی، توابع ویژه، بهینهسازی و بسیاری موارد دیگر را میدهد.[۵]