ΠΡΡΠ½Π°Ρ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° 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-ΡΠΈΠΏ 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
