Выпуск Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний NumPy 2.0.0

ДоступСн Ρ€Π΅Π»ΠΈΠ· Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний NumPy 2.0.0, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², связанных с использованиСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. NumPy являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вострСбованных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, примСняСмых для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… расчётов. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Python с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ 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. Π˜Π·ΠΌΠ΅Π½Π΅Π½Ρ‹ цСлочислСнныС Ρ‚ΠΈΠΏΡ‹, примСняСмыС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„oΡ€ΠΌΠ΅ Windows — Π½Π° 64-разрядных систСмах Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ примСняСтся 64-разрядный Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π° Π½Π° 32-разрядных — 32-разрядный (Ρ€Π°Π½Π΅Π΅ использовался Π°Π½Π°Π»ΠΎΠ³ Π‘ΠΈ-Ρ‚ΠΈΠΏΠ° long, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ эквивалСнт np.intp).

Π—Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опрСдСлСния Π² C-API, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° структура PyArray_Descr. МаксимальноС число ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², выставляСмоС Ρ‡Π΅Ρ€Π΅Π· макросы NPY_MAXDIMS ΠΈ NPY_MAXARGS, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ 64. ВсС комплСксныС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° использованиС ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ· спСцификации C99 (cfloat_t, cdouble_t, clongdouble_t). Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ C API для создания собствСнных dtype. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 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 для строковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ sort, argsort, partition ΠΈ argpartition, ускорСны ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с фиксированными строками Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ numpy.char. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ API
opt_func_info для трассировки ΠΈ интроспСктирования.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru