نمباي
عودة للموسوعةنوع |
Technical computing
|
---|---|
نظام التشغيل |
متعدد المنصات
|
مسقط الويب |
www.numpy.org
|
المطور الأصلي |
Travis Oliphant |
---|---|
المطورون |
Community project |
لغة البرمجة |
Python, C
|
الإصدار الأول |
Numeric, 1995 ; NumPy, 2006
|
الإصدار الأخير |
1.9.2 |
المستودع |
|
الرخصة |
رخص بي إس دي
|
نمباي (بالإنجليزية: نمباي) هي إضافة على لغة البرمجة بايثون، تٌستخدم للتعامل مع المصفوفات الكبيرة والحقول متعددة المستوى، وكذلك توفر مخطة كبيرة من الاقترانات الرياضية عالية المستوى للعمل على هذه الحقول والمصفوفات. فكرة نمباي اتىت من الإضافة جيم هوغنن والتي كانت في الأساس مطورة من قِبَل جيم هيوجيونين. وفي عام 2005 قام ترافياس أوليفانت بإنشاء نمباي بميزات ال Numeric وبإضافات واسعة عليها. يٌذكر حتى نمباي هي من البرمجيات مفتوحة المصدر.
الخواص
نمباي يقوم بتطبيق أوامره من خلال مترجم سي بايثون، وبالتالي فإن الخوارزميات الرياضية المكتوبة بهذا الإصدار من بايثون غالباً يتم تطبيقها بشكل أبطأ. يقوم نمباي بالتغلب على هذه المشكلة من خلال تزويد حقول متعددة المستوى وإقترانات تتعامل بكفائة مع هذه الحقول. لذلك فإن أي خوارزمية يمكن كتابتها على شكل إقتران على مصفوفات أوحقول متعددة المستوى، يمكن حتى تتم بنفس السرعة كما لوأنها مكتوبة بلغة سي. استخدام نمباي في بايثون يعطي وظائف مماثلة مثل الوظائف الموجودة في ماتلاب، وكلاهما يسمح للمستخدم بكتابة برامج بسرعة، لطالما حتى هذه البرامج تعمل على الحقول أوالمصفوفات.
الحقول متعددة المستويات ndarray
الجوهر الأساسي لنمباي هي الحقول متعددة المستويات (ndarray: n-dimensional array). بالمقارنة مع الحقول الموجودة مسبقاً في بايثون (محتوياتها ليست من نفس النوع)، فإن ال ndarray تحوي على محتويات من نفس النوع(مثلاً عدد سليم أونص).
أمثلة
إنشاء حقل
>>> 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) # يقوم بإنشاء حقل من أربع نقاط تبدأ ب 0 وتنتهي ب 2
>>> 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])
>>> solve(a, b) # solve the equation ax = b
array([-4.83050847, 2.13559322, 1.18644068])
>>> c = rand(3, 3) # create a 3x3 random matrix
>>> c
array([[3.98732789, 2.47702609, 4.71167924],
[ 9.24410671, 5.5240412 , 10.6468792 ],
[ 10.38136661, 8.44968437, 15.17639591]])
>>> np.dot(a, c) # matrix multiplication
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. ISBN .
انظر أيضاً
- لغة بايثون
- ماتلاب
وصلات خارجية
- صفحة برنامج نمباي على أوبن هب
- المسقط الرئيسي
- تاريخ نمباي
مراجع
التصنيفات: برمجيات تسخدم رخصة بي إس دي, برمجيات علمية مجانية, لغات برمجة عددية, مكتبات برمجية, مقالات بدون مصدر منذ يونيو 2019, جميع المقالات بدون مصدر, مقالات بدون مصدر منذ 2019, جميع المقالات التي بحاجة لصيانة, مقالات يتيمة منذ سبتمبر 2015, جميع المقالات اليتيمة, مقالات يتيمة (تقنية), صفحات تستخدم خاصية P856, صفحات تستخدم خاصية P1324, صفحات تستخدم خاصية P154, صفحات تستخدم خاصية P18, صفحات تستخدم خاصية P1972, صفحات تستخدم خاصية P373, بوابة برمجيات/مقالات متعلقة, بوابة برمجيات حرة/مقالات متعلقة, بوابة تقنية المعلومات/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات