نمباي
نوع | |
---|---|
نظام التشغيل | |
النموذج المصدري | |
المطور الأصلي |
Travis Oliphant |
المطورون |
Community project |
موقع الويب |
ضمان الجودة | |
---|---|
لغة البرمجة | |
الإصدار الأول |
Numeric, 1995 ; NumPy, 2006 |
الإصدار الأخير |
1.9.2 |
المستودع | |
الرخصة | |
الملفات المقروءة | |
الملفات المنتجة |
نمباي (بالإنجليزية: نمباي) هي إضافة على لغة البرمجة بايثون، تٌستخدم للتعامل مع المصفوفات الكبيرة والحقول متعددة المستوى، وكذلك توفر مكتبة كبيرة من الاقترانات الرياضية عالية المستوى للعمل على هذه الحقول والمصفوفات.[4][5][6] فكرة نمباي جاءت من الإضافة جيم هوغنن والتي كانت في الأساس مطورة من قِبَل جيم هيوجيونين. وفي عام 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:978-1-4493-0546-8.
انظر أيضًا
[عدل]وصلات خارجية
[عدل]- نمباي على موقع Open Hub (الإنجليزية)
- نمباي على موقع Free Software Directory (الإنجليزية)
- صفحة برنامج نمباي على أوبن هب
- الموقع الرئيسي
- تاريخ نمباي
مراجع
[عدل]- ^ الوصول: 5 أكتوبر 2016.
- ^ "Release 2.1.2". 5 أكتوبر 2024. اطلع عليه بتاريخ 2024-10-22.
- ^ الوصول: 6 أكتوبر 2016.
- ^ "معلومات عن نمباي على موقع rosettacode.org". rosettacode.org. مؤرشف من الأصل في 2020-02-29.
- ^ "معلومات عن نمباي على موقع pro-linux.de". pro-linux.de. مؤرشف من الأصل في 2020-10-29.
- ^ "معلومات عن نمباي على موقع directory.fsf.org". directory.fsf.org. مؤرشف من الأصل في 2014-04-20.