Operações com vetores e matrizes

2,742 views
Skip to first unread message

Giancarlo Silva

unread,
Oct 11, 2011, 11:03:34 PM10/11/11
to python-brasil
Boa noite a todos!

Meu nome é Giancarlo Silva. Sou novo aqui no grupo e sou iniciante em
Python. Me interessei bastante por essa linguagem e estou estudando-a
há algum tempo, mas estou com uma dúvida sobre vetores e matrizes em
Python.

Eu aprendi que é possível criar vetores e matrizes usando as listas,
sendo o vetor uma lista simples formada por números e uma matriz feita
de listas aninhadas. Também aprendi que é possível chamar cada um dos
elementos do vetor ou matriz. Entretanto eu não estou conseguindo
efetuar operações matemáticas com eles. Coisas como somar ou subtrair
2 vetores, multiplicar um vetor ou matriz por uma escalar, multiplicar
2 matrizes...

Gostaria de saber se é possível efetuar essas operações sem a ajuda de
pacotes como o NumPy, SciPy ou similares, apenas usando os recursos da
própria linguagem, como eu vejo ser possível em outras linguagens como
C++, Java e outras.

Antecipadamente agradeço.

Elias Barrionovo

unread,
Oct 11, 2011, 11:41:14 PM10/11/11
to python...@googlegroups.com
Voce pode usando listas e listas de listas (como em c voce faria com
arrays e arrays de arrays). Mas a performance e o uso de memoria serao
bem piores que se usar numpy/scipy .

Alem disso, se voce for usar matplotlib, ele tende a converter seus
valores para arrays do numpy, entao no final da na mesma...

Claro que. Dependendo da aplicacao, isso pode nao ser problema...

Espero ter ajudado; se tiver algum erro, favor consertar! =)

Abraco!

> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>

--
Sent from my mobile device

NI!

Gladson Simplicio

unread,
Oct 11, 2011, 11:43:17 PM10/11/11
to python...@googlegroups.com

Gladson Simplicio

unread,
Oct 11, 2011, 11:45:26 PM10/11/11
to python...@googlegroups.com

Giancarlo Silva

unread,
Oct 12, 2011, 12:31:46 PM10/12/11
to python...@googlegroups.com
Entendi a quest�o do uso de mem�ria. Mas eu n�o queria fazer nada
grande, apenas alguns exerc�cios de opera��es com vetores e matrizes.
Estou estudando a ementa da disciplina de Algoritmos do meu curso, mas
usando Python em vez de C#.

De qualquer forma vou ler o conte�do dos links que o Gladson Simpl�cio
postou e continuar tentando. Muito obrigado! =)

Em 12/10/2011 00:41, Elias Barrionovo escreveu:
> Voce pode usando listas e listas de listas (como em c voce faria com
> arrays e arrays de arrays). Mas a performance e o uso de memoria serao
> bem piores que se usar numpy/scipy .
>
> Alem disso, se voce for usar matplotlib, ele tende a converter seus
> valores para arrays do numpy, entao no final da na mesma...
>
> Claro que. Dependendo da aplicacao, isso pode nao ser problema...
>
> Espero ter ajudado; se tiver algum erro, favor consertar! =)
>
> Abraco!
>
> On 10/12/11, Giancarlo Silva<gianca...@gmail.com> wrote:
>> Boa noite a todos!
>>

>> Meu nome � Giancarlo Silva. Sou novo aqui no grupo e sou iniciante em


>> Python. Me interessei bastante por essa linguagem e estou estudando-a

>> h� algum tempo, mas estou com uma d�vida sobre vetores e matrizes em
>> Python.
>>
>> Eu aprendi que � poss�vel criar vetores e matrizes usando as listas,
>> sendo o vetor uma lista simples formada por n�meros e uma matriz feita
>> de listas aninhadas. Tamb�m aprendi que � poss�vel chamar cada um dos
>> elementos do vetor ou matriz. Entretanto eu n�o estou conseguindo
>> efetuar opera��es matem�ticas com eles. Coisas como somar ou subtrair


>> 2 vetores, multiplicar um vetor ou matriz por uma escalar, multiplicar
>> 2 matrizes...
>>

>> Gostaria de saber se � poss�vel efetuar essas opera��es sem a ajuda de


>> pacotes como o NumPy, SciPy ou similares, apenas usando os recursos da

>> pr�pria linguagem, como eu vejo ser poss�vel em outras linguagens como
>> C++, Java e outras.
>>
>> Antecipadamente agrade�o.


>>
>> --
>> ------------------------------------
>> Grupo Python-Brasil
>> http://www.python.org.br/wiki/AntesDePerguntar
>>
>> <*> Para visitar o site do grupo na web, acesse:
>> http://groups.google.com/group/python-brasil
>>
>> <*> Para sair deste grupo, envie um e-mail para:
>> python-brasi...@googlegroups.com
>>

--
Giancarlo Silva
Acad�mico de Tecnologia em An�lise e Desenvolvimento de Sistemas - IFRN

about.me/giancarlozero

Luiz Augusto M. Morais

unread,
Oct 12, 2011, 4:08:27 PM10/12/11
to python...@googlegroups.com
Giancarlo, você pode fazer operações com matrizes usando apenas os tipos builtin do Python, neste caso, as listas.
Como você disse que está aprendendo isso em uma disciplina de algoritmos, acho melhor você não usar nenhuma função "mágica" do Python que faz tudo por você.
Te aconselho a implementar todos os algoritmos de uma forma não pythônica, pois assim, você vai conseguir aprender o que realmente acontece por "debaixo dos panos".

Dê uma olhada neste post que eu escrevi há algum tempo. Tem também esse arquivo que eu criei no gist.

[]'s
Luiz Augusto

Em 12 de outubro de 2011 13:31, Giancarlo Silva <gianca...@gmail.com> escreveu:
Entendi a questão do uso de memória. Mas eu não queria fazer nada grande, apenas alguns exercícios de operações com vetores e matrizes. Estou estudando a ementa da disciplina de Algoritmos do meu curso, mas usando Python em vez de C#.

De qualquer forma vou ler o conteúdo dos links que o Gladson Simplício postou e continuar tentando. Muito obrigado! =)


Em 12/10/2011 00:41, Elias Barrionovo escreveu:
Voce pode usando listas e listas de listas (como em c voce faria com
arrays e arrays de arrays). Mas a performance e o uso de memoria serao
bem  piores que se usar numpy/scipy .

Alem disso, se voce for usar matplotlib, ele tende a converter seus
valores para arrays do numpy, entao no final da na mesma...

Claro que. Dependendo da aplicacao, isso pode nao ser problema...

Espero ter ajudado; se tiver algum erro, favor consertar! =)

Abraco!

On 10/12/11, Giancarlo Silva<gianca...@gmail.com>  wrote:
Boa noite a todos!

Meu nome é Giancarlo Silva. Sou novo aqui no grupo e sou iniciante em

Python. Me interessei bastante por essa linguagem e estou estudando-a
há algum tempo, mas estou com uma dúvida sobre vetores e matrizes em
Python.

Eu aprendi que é possível criar vetores e matrizes usando as listas,
sendo o vetor uma lista simples formada por números e uma matriz feita
de listas aninhadas. Também aprendi que é possível chamar cada um dos
elementos do vetor ou matriz. Entretanto eu não estou conseguindo
efetuar operações matemáticas com eles. Coisas como somar ou subtrair

2 vetores, multiplicar um vetor ou matriz por uma escalar, multiplicar
2 matrizes...

Gostaria de saber se é possível efetuar essas operações sem a ajuda de

pacotes como o NumPy, SciPy ou similares, apenas usando os recursos da
própria linguagem, como eu vejo ser possível em outras linguagens como
C++, Java e outras.

Antecipadamente agradeço.


--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*>  Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*>  Para sair deste grupo, envie um e-mail para:
    python-brasil+unsubscribe@googlegroups.com


--
Giancarlo Silva
Acadêmico de Tecnologia em Análise e Desenvolvimento de Sistemas - IFRN

about.me/giancarlozero

--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
  http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:



--
Atenciosamente,

Luiz Augusto de Macêdo Morais
Graduando em Licenciatura em Computação
Universidade Estadual da Paraíba - Campus VII / Patos - PB

___________________________________________________

Acesse: http://ola-mundo.com
"Diga um Olá para o Mundo da programação!"

Marcel Caraciolo

unread,
Oct 12, 2011, 5:41:51 PM10/12/11
to python...@googlegroups.com
OLá Giancarlo,
Como pessoal já comentou é possível sim usar tanto o Python nativo como as extensões para manipulação de matrizes. Se você realmente precisa trabalhar com matrizes, especialmente envolvendo manipulações como inversão, transposta, multiplicação, etc. o numpy é uma excelente escolha, por exemplo:


Operações básicas 

>>> a = array( [20,30,40,50] )
>>> b = arange( 4 )
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])

>>> A = array( [[1,1],
...             [0,1]] )
>>> B = array( [[2,0],
...             [3,4]] )
>>> A*B                         # elementwise product
array([[2, 0],
       [0, 4]])
>>> dot(A,B)                    # matrix product
array([[5, 4],
       [3, 4]])


Muito mais pode ser encontrado neste link:



2011/10/12 Luiz Augusto M. Morais <luizau...@gmail.com>



--
Marcel Pinheiro Caraciolo
M.S.C. Candidate at CIN/UFPE

Єvaζdσ

unread,
Oct 13, 2011, 7:37:12 AM10/13/11
to python...@googlegroups.com
Uma solução interessante, é você combinar dicionário com tupla para indexar a matriz. Por exemplo:

uma matriz de 2 dimensões:
1 2
3 4

>>> d = {}
>>> d[(0,0)] = 1
>>> d[(0,1)] = 2
>>> d[(1,0)] = 3
>>> d[(1,1)] = 4

>>> for i in range(2):
...     print '\n'
...     for j in range(2):
...             print d[i,j],
...

saida:

1 2
3 4



2011/10/12 Marcel Caraciolo <cara...@gmail.com>

Giancarlo Silva

unread,
Oct 23, 2011, 7:30:59 PM10/23/11
to python...@googlegroups.com
Peço desculpas pela demora ao responder. Tive problemas com meu computador e só nesse fim de semana pude resolvê-los.

Bom, eu até tinha achado o seu blog em uma pesquisa no Google, Augusto. Foi bastante esclarecedor. De qualquer forma, seguirei seu conselho e revisarei Matrizes em matemática, antes de me aventurar novamente no Python.

A você e a todos os que me ajudaram, meu muito obrigado! =D
Luiz Augusto


--
Giancarlo Silva
Acadêmico de Tecnologia em Análise e Desenvolvimento de Sistemas - IFRN

about.me/giancarlozero

--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
  http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:



--
Atenciosamente,

Luiz Augusto de Macêdo Morais
Graduando em Licenciatura em Computação
Universidade Estadual da Paraíba - Campus VII / Patos - PB

___________________________________________________

Acesse: http://ola-mundo.com
"Diga um Olá para o Mundo da programação!"

--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
Reply all
Reply to author
Forward
0 new messages