категории | RSS

Релиз NumPy 2.0.0

16 июня 2024 года состоялся релиз стабильной версии Python-библиотеки для научных вычислений NumPy 2.0.0. Это первый значительный релиз открытого проекта с 2006 года. Новая версия NumPy включает в себя новые возможности и оптимизации производительности, множество новых функций и изменений как в Python, так и в ABI, в API и в C-API, нарушающие обратную совместимость. Например, библиотека SciPy, собранная с NumPy 1.x, для работы с NumPy 2.0 потребует перекомпиляции. В отдельных случаях для использования NumPy 2.0 в приложениях может потребоваться внесение изменений в код.

Python-библиотека NumPy ориентирована на работу с многомерными массивами и матрицами, а также предоставляет большую коллекцию функций с реализацией различных алгоритмов, связанных с использованием матриц.

Проект NumPy является одной из наиболее востребованных библиотек, применяемых для научных расчётов. Исходный код NumPy написан на языке Python с применением оптимизаций на языке C и опубликован на GitHub под лицензией BSD.

По информации OpenNET, наиболее крупное нарушение совместимости в релизе NumPy 2.0.0 связано с сохранением точности скалярных выражений, например, "np.float32(3) + 3" теперь вернёт значение с типом float32, а не float64, а в выражениях с несколькими типами для результата будет использован тип с наивысшей точностью, то есть "np.array([3], dtype=np.float32) + np.float64(3)" вернёт значение с типом float64.

Также в проекте заменены целочисленные типы, применяемые по умолчанию на платформе Windows. На 64-разрядных системах Windows теперь применяется 64-разрядный целый тип, а на 32-разрядных - 32-разрядный (ранее использовался аналог C-типа long, а теперь эквивалент np.intp).

В NumPy 2.0.0 заменены или удалены некоторые определения в C-API, например, изменена структура PyArray_Descr. Максимальное число измерений и аргументов, выставляемое через макросы NPY_MAXDIMS и NPY_MAXARGS, увеличено до 64. Все комплексные типы переведены на использование штатных типов из спецификации C99 (cfloat_t, cdouble_t, clongdouble_t).

В NumPy 2.0.0 добавлен новый C API для создания собственных dtype, а также предложены новые упрощённые функции инициализации PyArray_ImportNumPyAPI и PyUFunc_ImportUFuncAPI.

В Python API новой версии NumPy обеспечено более явное разделение между публичными и приватными API, предложена новая структура модулей. Около 100 функций, модулей и констант вынесены из основного пространства имён "np", объявлены устаревшими или удалены.

Также в NumPy 2.0.0 почищено пространство имён np.lib. Число объектов в основном пространстве имён сокращено на 10%, а в пространстве имён numpy.lib - на 80%. Переведено в разряд приватных пространство имён numpy.core. Удалены некоторые методы из классов np.ndarray и np.generic. Создано новое пространство имён numpy.strings со строковыми операциями.

Из новых возможностей в NumPy 2.0.0 можно выделить: поддержку типов float32 и longdouble во всех функциях numpy.fft, поддержку стандартного API Array в основном пространстве имён, новое пространство имён и типы для строк переменной длины.

В рамках подготовки NumPy 2.0.0 сообществом разработчиков проекта проведена оптимизация производительности с использованием библиотек Intel x86-simd-sort и Google Highway для строковых функций sort, argsort, partition и argpartition, ускорены операции с фиксированными строками в модуле numpy.char. Также в проекте добавлен новый API opt_func_info для трассировки и интроспектирования.



Источник новости: habr.com

DimonVideo
2024-06-17T10:50:04Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика