Pular para o conteúdo principal

Lançamento do NumPy 2.0: Principais mudanças e migração

Descubra todos os novos recursos e alterações feitos na atualização do NumPy 2.0.
Actualizado 29 de jul. de 2024  · 9 min de leitura

À medida que a ciência de dados evolui, são necessárias algumas alterações nas bibliotecas comuns e, desta vez, a biblioteca NumPy está recebendo uma atualização para a versão 2.0. Essa grande atualização foi lançada em junho de 2024 e traz muitos novos recursos e melhorias para a popular biblioteca Python.

Com um salto tão grande nas mudanças, é provável que haja algumas áreas a serem observadas que podem exigir que você ajuste o código existente.

Neste artigo, compartilharemos uma visão geral do que o NumPy 2.0 inclui, as principais alterações feitas e como você pode migrar para o NumPy 2.0.

Introdução ao NumPy 2.0

Criado com base em anos de feedback e avanços tecnológicos, o NumPy 2.0 é uma atualização ambiciosa, diferente das muitas atualizações anteriores realizadas nos últimos anos.

Em sua publicação de lançamento no blogeles apresentaram uma API atualizada, regras de promoção escalar aprimoradas, uma nova API DType e um novo DType de cadeia de caracteres, aprimoramentos de compatibilidade e alinhamento dos padrões de API. Com esses esforços, os usuários perceberão melhorias significativas no desempenho e na documentação.

No entanto, com uma mudança tão grande na biblioteca, essa nova versão vem com algumas interrupções. Por exemplo, as novas alterações de API e ABI são incompatíveis com versões anteriores.

Principais recursos novos

De acordo com as notas de versãoo NumPy 2.0 apresenta mudanças significativas, e aqui estão as mais notáveis:

Alterações de API e ABI

Nesta atualização, houve várias alterações de limpeza feitas na API e na ABI (Interface Binária de Aplicativo).

Com a nova atualização, declarada na NEP (NumPy Enhancement Proposal) 52, o NumPy está se afastando de sua postura habitual de ter compatibilidade com versões anteriores para garantir uma API mais otimizada, mais limpa e mais simples.

Aqui estão algumas mudanças notáveis:

Para as alterações de ABI, haverá uma interrupção com a nova versão. Isso afetará os binários de pacotes que usam a API C do NumPy.

Qualquer pessoa que o construa com base em qualquer versão anterior do NumPy 1.xx não funcionará com o NumPy 2.0. Compartilharei mais sobre como as coisas podem ser migradas de acordo com a recomendação deles. Você encontrará uma mensagem ImportError, que indica incompatibilidade binária.

Nova API DType e String DType

Conforme proposto na NEP 41esta atualização 2.0 lança uma nova API para implementar tipos de dados personalizados definidos pelo usuário usando o tipo StringDType que é um tipo de dados. Essa nova API inclui suporte nativo para tipos de dados de string de comprimento variável, que os usuários do NumPy há muito solicitavam.

Regras de promoção escalar

Inicialmente proposto na NEP 50as regras de promoção escalar no NumPy também foram atualizadas para evitar surpresas para o usuário. Anteriormente, a promoção muitas vezes dependia dos valores de dados das matrizes de entrada em vez de apenas de seus DTypes, o que pode ser um comportamento confuso.

Para ver os novos caminhos de promoção, consulte a imagem abaixo:

Precisão e promoção do tipo DT

Fonte: Precisão e promoção do DType do NumPy

Melhorias no desempenho

Essa nova versão também traz algumas melhorias de desempenho.

Aqui estão algumas áreas importantes que foram aprimoradas:

  • Funções de classificação mais rápidas
  • Melhorias no desempenho das operações de álgebra linear no macOS por meio do macOS Accelerate

Compatibilidade com o Windows

Para atender melhor aos usuários do Windows, a equipe do NumPy também corrigiu vários problemas de compatibilidade com a nova versão.

Por exemplo, eles alteraram o tipo de número inteiro padrão no Windows para int64 em vez de int32, para corresponder ao comportamento padrão em outras plataformas de sistema operacional.

Documentação e usabilidade aprimoradas

Mais documentação foi adicionada ao estrutura de módulos do NumPye houve melhorias na navegação do guia de referência. O construção a partir do código-fonte também foi totalmente reescrita.

Como migrar para o NumPy 2.0

Atualizando para o NumPy 2.0

Em primeiro lugar, para começar a usar essa nova versão do NumPy, você precisará atualizá-lo da versão atual para a mais recente.

Para fazer isso, basta usar a opção upgrade nesse comando:

pip install -U numpy

Como alternativa, você também pode usar isso:

pip install –upgrade numpy

Essa opção de upgrade atualiza o(s) pacote(s) especificado(s) para a versão mais recente, que, nesse caso, é o NumPy. Depois de executar o comando, permita que o sistema instale o pacote até que você veja a mensagem "Successfully installed numpy-2.0.0".

Se quiser atualizar para uma versão específica em vez da versão mais recente, você pode usar esse comando:

pip install numpy==2.0.0

Isso garante que a versão que você está instalando é a correta, que, nesse caso, é a 2.0.0.

Para fazer uma segunda verificação, execute este comando:

pip list

Isso deve listar todos os pacotes/bibliotecas que você instalou e suas respectivas versões. Verifique a saída para ver se as bibliotecas numpy estão atualizadas para a versão 2.0.0. 

No processo de instalação, você também pode encontrar algumas mensagens de dependência que aparecem em vermelho. Isso significa que há alguns problemas potenciais com seu código após a atualização para a versão mais recente. Em seguida, você pode examinar as áreas específicas e as bibliotecas afetadas individualmente.

A atualização para o NumPy 2.0 pode causar interrupções temporárias, portanto, é melhor garantir que tudo esteja bem migrado em seus scripts e futuros pipelines.

Para obter um guia completo, consulte o Guia de migração do NumPy 2.0 lançado pelos desenvolvedores.

Aqui estão as principais áreas que você deve observar ao migrar:

Abordagem das alterações de promoção do tipo de dados NumPy

Para obter um guia completo sobre como os diversos comportamentos de alteração e as alterações esperadas no tipo de dados, consulte esta tabela na NEP 50.

O principal problema de compatibilidade com versões anteriores é a precisão de seus escalares.

Por exemplo, quando uma operação como esta é executada:

np.float32(6) + 6.

Isso retorna um tipo de dados float32 em vez de um tipo de dados float64, o que dificulta a compatibilidade com versões anteriores. Para resolver esse problema, veja o que eles recomendam:

Converta os tipos de dados explicitamente: Use os scalars int(), float() ou numpy_scalar.item() para especificar explicitamente o tipo de dados.

Ative os avisos para que você possa rastrear as alterações: Use os avisos como uma forma de procurar alterações por meio de rastreamentos de erros.

Abordagem de alterações no namespace

Com essa atualização 2.0, as várias remoções de namespace podem afetar seu código. A equipe do NumPy sugere estas etapas:

  1. Verifique se você tem aliases obsoletos e diretrizes de migração aqui.
  2. Substitua os aliases obsoletos por uma alternativa compatível com as versões anteriores.
  3. Verifique se há membros privados que foram removidos na atualização 2.0.
  4. Use a API existente se você estiver usando membros privados.

Abordando a quebra de ABI

Se estiver usando um pacote Python que dependa da API C do NumPy, você terá que lidar com qualquer quebra na ABI. Os desenvolvedores lançaram alguns conselhos específicos do NumPy 2.0 para essas situações, a fim de resolver a incompatibilidade:

Plug-in Ruff para atualizar o código Python

Para ajudá-lo no processo de migração, você pode usar o plugin Ruff com uma equipe dedicada do Ruff dedicado, NPY201.

O Ruff está disponível como ruff no PyPI. Para instalar o Ruff, digite o seguinte na linha de comando:

pip install ruff

Para obter mais detalhes, consulte o guia completo de instalação do Ruff.

Certifique-se de especificar a regra NP201 em seu pyproject.toml:

[tool.ruff.lint]
select = ["NPY201"]

Como alternativa, você também pode especificar a regra NPY201 usando a linha de comando:

$ ruff check path/to/code/ --select NPY201

Contribuições da comunidade

O lançamento do NumPy 2.0 é o ponto culminante dos esforços de sua comunidade. Por meio dos vários NEPs sugeridos pela comunidade, muitas das propostas há muito esperadas foram finalmente implementadas.

Desenvolvedores, pesquisadores e entusiastas entusiasmados desempenharam um papel fundamental nessa versão inovadora, compartilhando seus conhecimentos, fornecendo feedback e enviando aprimoramentos de código que moldaram significativamente o NumPy 2.0.

Conclusão

O NumPy 2.0 é um grande passo à frente para a linguagem de programação Python, com seus muitos recursos novos e melhorias no desempenho, na compatibilidade e na usabilidade. Se você estiver tendo problemas com a migração ou algum tipo de erro, é melhor entrar em contato diretamente com a equipe do NumPy.

Espero que este artigo tenha sido útil para que você entenda as principais mudanças nessa empolgante atualização do NumPy. Para uma leitura mais aprofundada, leia nosso Tutorial do NumPy.

Se você é novo no NumPy e gostaria de explorar mais, experimente nosso Curso de introdução ao NumPy ou confira este treinamento de código ao vivo do NumPy.

Temas

Principais cursos de Python

Certificação disponível

curso

Introdução ao NumPy

4 hr
36.9K
Domine suas habilidades no NumPy aprendendo a criar, classificar, filtrar e atualizar matrizes usando o censo em árvore da NYC.
Ver DetalhesRight Arrow
Iniciar curso

programa

Analista de dados

36 horas hr
Desenvolva suas habilidades de análise de dados em Python. Adquira as habilidades de analista de dados para manipular, analisar e visualizar dados. Você não precisa ter experiência em programação!
Ver maisRight Arrow