Está disponível uma versão da biblioteca Python para computação científica NumPy 2.0.0, focada em trabalhar com arrays e matrizes multidimensionais, além de fornecer uma grande coleção de funções com a implementação de diversos algoritmos relacionados ao uso de matrizes. NumPy é uma das bibliotecas mais populares usadas para cálculos científicos. O código do projeto é escrito em Python usando otimizações em C e é distribuído sob a licença BSD.
NumPy 2.0.0 marca o primeiro lançamento significativo desde 2006.
Além de novos recursos e otimizações de desempenho, a nova versão inclui alterações na ABI, API Python e C-API que quebram a compatibilidade com versões anteriores. Por exemplo, a biblioteca SciPy compilada com NumPy 1.x exigirá recompilação para funcionar com NumPy 2.0. Em alguns casos, podem ser necessárias alterações de código para usar o NumPy 2.0 em aplicativos.
A correção mais significativa está relacionada à preservação da precisão de expressões escalares. Por exemplo, "np.float32(3) + 3" agora retornará um valor do tipo float32, e não float64. Além disso, em expressões com múltiplos tipos, o tipo com a maior precisão será usado como resultado, ou seja, "np.array([3], dtype=np.float32) + np.float64(3)" retornará um valor do tipo float64. Os tipos inteiros padrão usados na plataforma foram alterados. Windows — Em sistemas de 64 bits, agora é usado um tipo inteiro de 64 bits e, em sistemas de 32 bits, um tipo de 32 bits (anteriormente, o análogo long do tipo C era usado, mas agora o equivalente np.intp).
Algumas definições na C-API foram substituídas ou removidas, por exemplo, a estrutura PyArray_Descr foi alterada. O número máximo de dimensões e argumentos definidos por meio das macros NPY_MAXDIMS e NPY_MAXARGS foi aumentado para 64. Todos os tipos complexos foram alterados para usar tipos padrão da especificação C99 (cfloat_t, cdouble_t, clongdouble_t). Adicionada nova API C para criação de tipos personalizados. Novas funções de inicialização simplificadas PyArray_ImportNumPyAPI e PyUFunc_ImportUFuncAPI foram propostas.
A API Python fornece uma separação mais explícita entre APIs públicas e privadas e introduz uma nova estrutura de módulos. Cerca de 100 funções, módulos e constantes foram movidos para fora do namespace “np” principal, obsoletos ou removidos.
Limpei o namespace np.lib. O número de objetos no namespace principal foi reduzido em 10% e no namespace numpy.lib em 80%. O namespace numpy.core foi movido para privado. Removidos alguns métodos das classes np.ndarray e np.generic. Criado um novo namespace numpy.stringsf com operações de string.
Novos recursos incluem suporte para tipos float32 e longdouble em todas as funções numpy.fft, suporte para a API Array padrão no namespace principal, um novo namespace e tipos para strings de comprimento variável. A otimização do desempenho foi realizada usando as bibliotecas Intel x86-simd-sort e Google Highway para as funções de string sort, argsort, partição e argpartition, as operações com strings fixas no módulo numpy.char foram aceleradas. Nova API adicionada
opt_func_info para rastreamento e introspecção.
Fonte: opennet.ru
