À medida que a ciência de dados evolui, são necessárias algumas alterações nas bibliotecas comuns e, desta vez, a bibliotecaNumPy 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 suapublicaçã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áriasalteraçõ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.
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 naNEP 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 naNEP 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.
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:
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.
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, consulteesta 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:
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:
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 algunsconselhos 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 oplugin 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:
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.
Prepare-se para sua próxima entrevista em ciência de dados com perguntas essenciais sobre NumPy, do básico ao avançado. Perfeito para afiar suas habilidades e ganhar confiança!
Aqui está nossa visão geral detalhada dos recursos mais importantes que estão chegando ao Python 3.11, incluindo como instalar a versão beta e quando você poderá colocar as mãos na versão estável oficial.
Aprenda sobre as ferramentas Python essenciais para o desenvolvimento de software, raspagem e desenvolvimento da Web, análise e visualização de dados e aprendizado de máquina.
Este artigo ensina a você sobre otimização numérica, destacando diferentes técnicas. Ele discute os pacotes Python, como SciPy, CVXPY e Pyomo, e fornece um notebook DataLab prático para você executar exemplos de código.
Domine os expoentes em Python usando vários métodos, desde funções integradas até bibliotecas poderosas como NumPy, e utilize-os em cenários do mundo real para obter uma compreensão mais profunda.
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!
À 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:
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:
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
int64em vez deint32, 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:
Como alternativa, você também pode usar isso:
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:
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:
Isso deve listar todos os pacotes/bibliotecas que você instalou e suas respectivas versões. Verifique a saída para ver se as bibliotecas
numpyestã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:
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()ounumpy_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:
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:
Para obter mais detalhes, consulte o guia completo de instalação do Ruff.
Certifique-se de especificar a regra
NP201em seupyproject.toml:Como alternativa, você também pode especificar a regra NPY201 usando a linha de comando:
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.