Matrizes e vetores numéricos em Python: A solução

Publicado por João Carlos abreu Junior em 16/09/2009

[ Hits: 53.793 ]

 


Matrizes e vetores numéricos em Python: A solução



Essa dica mostra como trabalhar de forma eficiente com matrizes numéricas em Python.

A estrutura de dados e o objetivo

Em cada posição do meu vetor preciso guardar 4 números: dois inteiros e dois reais. Vamos denominar esses 4 números como: y, x, valor1, valor2. Onde y e x são meus números inteiros e valor1 e valor2 são meus números reais.

Esse vetor deverá ser ordenado da seguinte forma:
  • Valor1: Decrescente
  • Valor2: Crescente

Ordenação

Após alocar toda a memória e preencher com os dados necessários, é preciso ordenar o vetor, como foi explicado inicialmente. Segue abaixo o código devidamente explicado:
A variável índice é um vetor que contém as posições, a variável dados deve ser impressa para que seja vista de forma ordenada.

O código completo, para teste, pode ser obtido em: Utilizando a biblioteca Numpy [Python Script]

1a. tentativa

Criar uma lista de tuplas onde cada tupla guarda os 4 números citados anteriormente e ordenar a lista com o método sort da mesma. O problema é que o Python consumia toda a memória do computador. Estranhamente o Python só consumia a memória do computador quando eu guardava variáveis na tupla, como no código abaixo:
Se eu guardasse os valores diretamente, como no código da figura abaixo:
Nada de errado acontecia.

Matrizes ou vetores numéricos? Numpy é a solução

A biblioteca Numpy não faz parte do instalador padrão do Python, mas pode ser obtida através do site www.numpy.scipy.org.

Essa biblioteca é altamente eficiente para se trabalhar com vetores e matrizes numéricas. Com a utilização dessa biblioteca o problema acima foi resolvido. Segue abaixo a explicação do código utilizado:

2a. tentativa

A biblioteca array do Python é melhor para se trabalhar com os vetores e matrizes numéricas. Então agora tentamos criar uma lista de arrays ao invés de uma lista de tuplas.

Armazenando variáveis, o Python novamente consumiu toda a memória do computador, segue abaixo o código utilizado:
Como na 1a. tentativa, armazenando os valores, nenhum problema ocorreu. Segue abaixo o código:

Conclusão

A biblioteca Numpy é altamente eficiente quanto ao uso de memória. Ela também se mostrou muito rápida nas operações com matriz, por exemplo: encontrar uma transposta de uma matriz, transformar matriz em vetor, entre outras coisas. Esse tutorial foi apenas uma introdução à biblioteca Numpy, mostrando como ela foi útil na resolução de um problema real, é altamente recomendado que você leia a documentação da biblioteca.

Outras dicas deste autor

Livro: Python para desenvolvedores

Internacionalização dos programas em Python

Leitura recomendada

Liberar o WhatsApp - Texto, imagem, áudio, vídeo e ligações [iptables]

Target TTL do Iptables: Contornando bloqueios de compartilhamento

tcpdump: Monitorando conexões

Erro ao instalar Fedora 17 usando Kickstart por PXE e com IP fixo [Resolvido]

Instant Client Oracle 10G + SQLDeveloper no Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts