Հասանելի է Python գրադարանի թողարկումը գիտական հաշվարկների համար NumPy 2.0.0, որը կենտրոնացած է բազմաչափ զանգվածների և մատրիցների հետ աշխատելու վրա, ինչպես նաև տրամադրում է ֆունկցիաների մեծ հավաքածու՝ մատրիցների օգտագործման հետ կապված տարբեր ալգորիթմների ներդրմամբ: NumPy-ն ամենահայտնի գրադարաններից մեկն է, որն օգտագործվում է գիտական հաշվարկների համար: Ծրագրի կոդը գրված է Python-ում՝ օգտագործելով C-ի օպտիմալացումները և բաշխվում է BSD լիցենզիայի ներքո:
NumPy 2.0.0-ն առաջին խոշոր թողարկումն է 2006 թվականից ի վեր:
Նոր տարբերակում, բացի նոր հնարավորություններից և կատարողականի օպտիմալացումներից, փոփոխություններ են կատարվել ABI-ում, Python API-ում և C-API-ում, որոնք խախտում են հետընթաց համատեղելիությունը։ Օրինակ, NumPy 1.x-ով կազմված SciPy գրադարանը 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 տիպի 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 ֆունկցիաներում, ստանդարտ Array API-ի աջակցություն հիմնական անվանատարածքում, նոր անվանատարածք և տիպեր փոփոխական երկարությամբ տողերի համար: Կատարման օպտիմիզացումն իրականացվել է Intel x86-simd-sort և Google Highway գրադարանների միջոցով՝ լարային տեսակավորման, argsort, բաժանման և argpartition գործառույթների համար, numpy.char մոդուլում ֆիքսված տողերով գործողություններն արագացվել են: Ավելացվեց նոր API
opt_func_info հետագծման և ինքզննման համար:
Source: opennet.ru
