1 pontos por GN⁺ 2024-06-17 | 2 comentários | Compartilhar no WhatsApp

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

 
eususu 2024-06-18

Parece que vai haver muitos pacotes em conflito..

 
GN⁺ 2024-06-17
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 numpy2 e 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