curso
Lançamento do NumPy 2.0: Principais mudanças e migração
À 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:
- Divisão de APIs públicas e privadas: Usando uma estrutura de módulo, a API NumPy para Python agora tem uma divisão clara entre API pública e privada.
- Limpeza de espaço de nome: As funções foram simplificadas para facilitar o aprendizado do NumPy. Veja a lista completa de remoções para obter mais informações.
- Precarização da funcionalidade de nicho: Muitas das funções e aliases não recomendados foram removidos.
- Novo tipo personalizado: Para a API C, uma nova API pública para criar DType personalizado foi lançada.
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:
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:
- Verifique se você tem aliases obsoletos e diretrizes de migração aqui.
- Substitua os aliases obsoletos por uma alternativa compatível com as versões anteriores.
- Verifique se há membros privados que foram removidos na atualização 2.0.
- 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.
Principais cursos de Python
curso
Como escrever um código Python eficiente
programa