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

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

[ Hits: 64.350 ]

 


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

Acesso a internet via bluetooth com Razr V3 via GPRS usando Fedora Core 6

Amarrando placas de rede ao endereço MAC

Criando teclas de atalho no Ubuntu 9.04

Instação do layer7 no Debian Lenny

Usando o Return Query

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts