يتوفر إصدار من مكتبة Python للحوسبة العلمية NumPy 2.0.0، يركز على العمل مع المصفوفات والمصفوفات متعددة الأبعاد، كما يوفر مجموعة كبيرة من الوظائف مع تنفيذ خوارزميات مختلفة تتعلق باستخدام المصفوفات. NumPy هي إحدى المكتبات الأكثر شعبية المستخدمة في الحسابات العلمية. تتم كتابة كود المشروع بلغة Python باستخدام التحسينات في لغة C ويتم توزيعه بموجب ترخيص BSD.
يمثل NumPy 2.0.0 أول إصدار مهم منذ عام 2006.
في الإصدار الجديد، بالإضافة إلى الميزات الجديدة وتحسينات الأداء، تم إجراء تغييرات على ABI وPython API وC-API، مما ينتهك التوافق مع الإصدارات السابقة. على سبيل المثال، ستتطلب مكتبة SciPy المترجمة باستخدام NumPy 1.x إعادة الترجمة للعمل مع NumPy 2.0. في بعض الحالات، قد تكون هناك حاجة لإجراء تغييرات على التعليمات البرمجية لاستخدام NumPy 2.0 في التطبيقات.
تكمن المشكلة الرئيسية في الحفاظ على دقة التعبيرات العددية، فعلى سبيل المثال، ستُعيد الدالة "np.float32(3) + 3" قيمة من نوع float32، وليس float64. وفي التعبيرات متعددة الأنواع، سيتم استخدام النوع ذي الدقة الأعلى للنتيجة، أي أن الدالة "np.array([3], dtype=np.float32) + np.float64(3)" ستُعيد قيمة من نوع float64. وقد تم تغيير أنواع الأعداد الصحيحة الافتراضية المستخدمة على المنصة. Windows — في الأنظمة ذات 64 بت، يتم الآن استخدام نوع عدد صحيح 64 بت، وفي الأنظمة ذات 32 بت، يتم استخدام نوع 32 بت (في السابق، كان يتم استخدام النوع المكافئ لـ C، ولكن الآن يتم استخدام np.intp).
تم استبدال أو إزالة بعض التعريفات في C-API، على سبيل المثال، تم تغيير بنية PyArray_Descr. تمت زيادة الحد الأقصى لعدد الأبعاد والوسائط المعينة من خلال وحدات الماكرو NPY_MAXDIMS وNPY_MAXARGS إلى 64. تم تحويل جميع الأنواع المعقدة إلى استخدام الأنواع القياسية من مواصفات C99 (cfloat_t، cdouble_t، clongdouble_t). تمت إضافة واجهة برمجة تطبيقات C جديدة لإنشاء أنواع dtypes مخصصة. تم اقتراح وظائف تهيئة مبسطة جديدة PyArray_ImportNumPyAPI وPyUFunc_ImportUFuncAPI.
توفر واجهة برمجة تطبيقات Python فصلًا أكثر وضوحًا بين واجهات برمجة التطبيقات العامة والخاصة وتقدم بنية وحدة نمطية جديدة. تم نقل حوالي 100 وظيفة ووحدة نمطية وثوابت من مساحة الاسم الرئيسية "np" أو إهمالها أو إزالتها.
تنظيف مساحة الاسم np.lib. تم تقليل عدد الكائنات في مساحة الاسم الرئيسية بنسبة 10%، وفي مساحة الاسم numpy.lib بنسبة 80%. تم نقل مساحة الاسم numpy.core إلى مساحة خاصة. تمت إزالة بعض الأساليب من فئات np.ndarray وnp.generic. تم إنشاء مساحة اسم جديدة numpy.stringsf باستخدام عمليات السلسلة.
تتضمن الميزات الجديدة دعمًا لأنواع float32 وlongdouble في جميع وظائف numpy.fft، ودعم Array API القياسي في مساحة الاسم الرئيسية، ومساحة اسم جديدة وأنواع لسلاسل متغيرة الطول. تم تنفيذ تحسين الأداء باستخدام مكتبات Intel x86-simd-sort وGoogle Highway لفرز وظائف السلسلة، وargsort، وpartition، وargpartition، وتم تسريع العمليات ذات السلاسل الثابتة في وحدة numpy.char. تمت إضافة واجهة برمجة التطبيقات الجديدة
opt_func_info للتتبع والاستبطان.
المصدر: opennet.ru
