نسخهای از کتابخانه Python برای محاسبات علمی NumPy 2.0.0 در دسترس است که بر کار با آرایهها و ماتریسهای چند بعدی متمرکز است و همچنین مجموعه بزرگی از توابع را با اجرای الگوریتمهای مختلف مرتبط با استفاده از ماتریسها ارائه میکند. NumPy یکی از محبوب ترین کتابخانه های مورد استفاده برای محاسبات علمی است. کد پروژه با استفاده از بهینه سازی در زبان 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 — در سیستمهای ۶۴ بیتی، اکنون از نوع عدد صحیح ۶۴ بیتی و در سیستمهای ۳۲ بیتی از نوع ۳۲ بیتی استفاده میشود (قبلاً از نوع C آنالوگ long استفاده میشد، اما اکنون معادل آن np.intp است).
برخی از تعاریف در C-API جایگزین یا حذف شده اند، به عنوان مثال، ساختار PyArray_Descr تغییر کرده است. حداکثر تعداد ابعاد و آرگومان های تنظیم شده از طریق ماکروهای NPY_MAXDIMS و NPY_MAXARGS به 64 افزایش یافته است. همه انواع پیچیده به استفاده از انواع استاندارد از مشخصات C99 (cfloat_t، cdouble_t، clongdouble_t) تغییر یافته اند. C API جدید برای ایجاد dtypes سفارشی اضافه شد. توابع اولیه ساده شده جدید PyArray_ImportNumPyAPI و PyUFunc_ImportUFuncAPI پیشنهاد شدهاند.
Python API جداسازی واضح تری بین APIهای عمومی و خصوصی ارائه می دهد و ساختار ماژول جدیدی را معرفی می کند. حدود 100 تابع، ماژول و ثابت از فضای نام اصلی "np" خارج شده، منسوخ شده یا حذف شده است.
فضای نام np.lib را پاک کرد. تعداد اشیاء در فضای نام اصلی 10% و در فضای نام numpy.lib 80% کاهش یافته است. فضای نام numpy.core به خصوصی منتقل شده است. برخی از متدها را از کلاس های np.ndarray و np.generic حذف کرد. یک فضای نام جدید numpy.stringsf با عملیات رشته ایجاد کرد.
ویژگی های جدید شامل پشتیبانی از انواع float32 و longdouble در همه توابع numpy.fft، پشتیبانی از API استاندارد Array در فضای نام اصلی، فضای نام جدید و انواع رشته های با طول متغیر است. بهینه سازی عملکرد با استفاده از کتابخانه های Intel x86-simd-sort و Google Highway برای توابع رشته مرتب سازی، argsort، پارتیشن و argpartition انجام شده است، عملیات با رشته های ثابت در ماژول numpy.char تسریع شده است. API جدید اضافه شد
opt_func_info برای ردیابی و درون نگری.
منبع: opennet.ru
