16 июня состоялся релиз открытой Python-библиотеки для научных вычислений NumPy версии 2.0.0. Она создана для работы с многомерными массивами и матрицами. В ней также есть большая коллекция функций с реализацией алгоритмов, связанных с матрицами.
Что нового
Версия 2.0.0 — первый значительный релиз библиотеки с 2006 года. Она включает в себя новые возможности, множество новых функций и изменений как в Python, так и в ABI, в API и в C-API.
Разработчики библиотеки NumPy заменили в новой версии целочисленные типы, применяемые по умолчанию на платформе Windows. Теперь на 64-битных системах применяется 64-битный целый тип, а на 32-битных — 32-битный.
Кроме того, создатели проекта заменили и удалили некоторые определения в 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, а также появилась новая структура модулей. Разработчики вынесли из основного пространства имён «np» около 100 функций, модулей и констант и объявили их устаревшими
NumPy 2.0.0 теперь поддерживает типы float32 и longdouble во всех функциях numpy.fft, а также стандартный API Array в основном пространстве имён. Кроме того, появилось новое пространство имён и типы для строк переменной длины.
Нарушения совместимости
Тем не менее ряд нововведений и функций нарушает совместимость с предыдущим значительным релизом NumPy и его компонентами.
Так, Python-библиотека SciPy, собранная с помощью NumPy 1.x, потребует перекомпиляции для работы с NumPy 2.0. В некоторых случаях использование второй версии в приложениях может потребовать внесение изменений в код.
Самое крупное нарушение совместимости связано с сохранением точности скалярных выражений. Так, например, выражение np.float32(3) + 3 вернёт значение с типом float32, а не float64. Кроме того, выражения с несколькими типами возвращают результат, используя тип с наивысшей точностью, — так, np.array ([3], dtype=np.float32) + np.float64(3) вернёт значение с float64.
О библиотеке NumPy
NumPy — одна из наиболее востребованных Python-библиотек, её применяют для научных расчётов. Она используется для работы с многомерными массивами и матрицами, а ещё содержит большую коллекцию функций с реализацией алгоритмов, связанных с матрицами.
Разработчики NumPy написали библиотеку на языке Python, используя оптимизацию на языке C. Её опубликовали на GitHub под лицензией BSD.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!