Novos recursos
- Adição do novo dtype de strings de comprimento variável,
StringDType, e do namespace numpy.strings para operações com strings.
- Suporte a
float32 e longdouble em todas as funções de numpy.fft.
- Suporte ao padrão Array API no namespace principal
numpy.
Melhorias de desempenho
- As funções de ordenação (
sort, argsort, partition, argpartition) foram aceleradas usando as bibliotecas Intel x86-simd-sort e Google Highway.
- Suporte ao macOS Accelerate e disponibilização de wheels binários para macOS >=14, com grande melhora no desempenho de operações de álgebra linear.
- As operações com strings de comprimento fixo em
numpy.char foram aceleradas.
- Adição de uma nova API de rastreamento e inspeção,
opt_func_info, para verificar e usar kernels específicos de hardware.
Melhorias na API Python
- Separação clara entre API pública e não pública, com uma nova estrutura de módulos.
- Remoção de várias funções e aliases obsoletos, tornando o aprendizado e o uso mais fáceis.
- Adição de nomes padronizados de dtype e da nova função de verificação
isdtype.
Melhorias na API C
- Adição de uma nova API C pública para criar dtypes personalizados.
- Remoção de funções e macros antigas, com ocultação de internals não públicos.
- Novas funções de inicialização:
PyArray_ImportNumPyAPI e PyUFunc_ImportUFuncAPI.
Comportamento aprimorado
- Adoção da NEP 50 para melhorar o comportamento de promoção de tipos, passando a depender apenas do dtype e não dos valores de dados do array de entrada.
- No Windows, o tipo inteiro padrão mudou de
int32 para int64.
- O número máximo de dimensões de arrays aumentou de 32 para 64.
Documentação
- A navegação no guia de referência foi bastante melhorada.
- A documentação para compilar a partir do código-fonte foi completamente reescrita.
Itens removidos da API Python
- Remoção de
np.geterrobj, np.seterrobj e do argumento nomeado relacionado de ufunc extobj=.
- Remoção de
np.cast, substituído por np.asarray(arg, dtype=dtype).
- Remoção de
np.source, substituído por inspect.getsource.
- Remoção de
np.lookfor.
- Remoção de
numpy.who, com recomendação de usar o explorador de variáveis de IDEs como Spyder ou Jupyter Notebook.
- Remoção de várias funções e aliases obsoletos.
Opinião do GN⁺
- Melhorias de desempenho: espera-se um grande aumento na velocidade de processamento de dados graças aos novos algoritmos de ordenação e ao suporte ao macOS Accelerate.
- Limpeza da API: a remoção de funções e aliases obsoletos torna o uso do NumPy mais intuitivo e enxuto.
- Promoção de tipos: com a adoção da NEP 50, o comportamento de promoção de tipos se torna mais previsível. Isso deve ajudar a reduzir resultados inesperados em operações com dtypes mistos.
- Melhorias na documentação: as melhorias no guia de referência e na documentação de build tornam mais fácil para desenvolvedores entender e usar o NumPy.
- Problemas de compatibilidade: como há muitas mudanças na API, códigos existentes podem não ser compatíveis. Será necessário atualizar o código consultando o guia de migração.
2 comentários
Parece que vai haver muitos pacotes em conflito..
Comentários no Hacker News
Como combinar operações complexas: Falta uma forma mais simples e fácil de memorizar para compor operações não elementwise. Há métodos demais, então é difícil e acaba sendo necessário reaprender toda vez.
Mudança do tipo inteiro padrão no Windows: No Windows, o tipo inteiro padrão mudou de int32 para int64. Isso é bom porque o comportamento agora fica alinhado com o de outras plataformas.
Principais atualizações do NumPy: Para quem não usa NumPy diretamente com frequência, talvez não haja grandes mudanças. A pessoa usa mais pandas e scipy, recorrendo aos algoritmos do NumPy apenas quando necessário.
Ciclo de atualização: Em grandes atualizações, a pessoa prefere não fazer upgrade imediatamente e esperar até que saia uma versão estável.
Gerenciamento de versão: Como é a primeira grande release com mudanças significativas em 18 anos, talvez fosse melhor fazer um fork com uma nova versão. A ideia seria instalar com
pip install numpy2e não precisar se preocupar com compatibilidade com outras bibliotecas.Problemas de compatibilidade de pacotes: Alguns pacotes não estão fixados na versão 1.x, o que está causando problemas. Dá para contornar temporariamente com
pip install numpy==1.*.Link para as notas de release: Link para as notas de release do NumPy 2.0.0. Notas de release do NumPy 2.0.0