Python - Matrix

Matrix é um caso especial de array bidimensional em que cada elemento de dados tem estritamente o mesmo tamanho. Portanto, cada matriz também é um array bidimensional, mas não vice-versa. As matrizes são estruturas de dados muito importantes para muitos cálculos matemáticos e científicos. Como já discutimos duas estruturas de dados de matriz dimensional no capítulo anterior, estaremos nos concentrando em operações de estrutura de dados específicas para matrizes neste capítulo.

Também estamos usando o pacote numpy para manipulação de dados de matriz.

Exemplo de matriz

Considere o caso de registrar a temperatura por 1 semana medida de manhã, meio-dia, tarde e meia-noite. Ele pode ser apresentado como uma matriz 7X5 usando um array e o método reshape disponível em numpy.

from numpy import * 
a = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = reshape(a,(7,5))
print(m)

Os dados acima podem ser representados como uma matriz bidimensional conforme abaixo.

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Acessando valores em uma matriz

Os elementos de dados em uma matriz podem ser acessados ​​usando os índices. O método de acesso é igual ao modo como os dados são acessados ​​no array bidimensional.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
# Print data for Wednesday
print(m[2])

# Print data for friday evening
print(m[4][3])

Quando o código acima é executado, ele produz o seguinte resultado -

['Wed', 15, 21, 20, 19]
23

Adicionando uma linha

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_r = append(m,[['Avg',12,15,13,11]],0)

print(m_r)

Quando o código acima é executado, ele produz o seguinte resultado -

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']
 ['Avg' '12' '15' '13' '11']]

Adicionando uma coluna

Podemos adicionar coluna a uma matriz usando o método insert (). aqui temos que mencionar o índice onde queremos adicionar a coluna e um array contendo os novos valores das colunas adicionadas. No exemplo abaixo, adicionamos uma nova coluna na quinta posição desde o início.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1)

print(m_c)

Quando o código acima é executado, ele produz o seguinte resultado -

[['Mon' '18' '20' '22' '17' '1']
 ['Tue' '11' '18' '21' '18' '2']
 ['Wed' '15' '21' '20' '19' '3']
 ['Thu' '11' '20' '22' '21' '4']
 ['Fri' '18' '17' '23' '22' '5']
 ['Sat' '12' '22' '20' '18' '6']
 ['Sun' '13' '15' '19' '16' '7']]

Exclua uma linha de uma matriz

Podemos deletar uma linha de uma matriz usando o método delete (). Temos que especificar o índice da linha e também o valor do eixo, que é 0 para uma linha e 1 para uma coluna.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,[2],0)

print(m)

Quando o código acima é executado, ele produz o seguinte resultado -

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Excluir uma coluna de uma matriz

Podemos deletar uma coluna de uma matriz usando o método delete (). Temos que especificar o índice da coluna e também o valor do eixo que é 0 para uma linha e 1 para uma coluna.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,s_[2],1)

print(m)

Quando o código acima é executado, ele produz o seguinte resultado -

[['Mon' '18' '22' '17']
 ['Tue' '11' '21' '18']
 ['Wed' '15' '20' '19']
 ['Thu' '11' '22' '21']
 ['Fri' '18' '23' '22']
 ['Sat' '12' '20' '18']
 ['Sun' '13' '19' '16']]

Atualizar uma linha em uma matriz

Para atualizar os valores na linha de uma matriz, simplesmente reatribuímos os valores no índice da linha. No exemplo abaixo, todos os valores para os dados de quinta-feira são marcados como zero. O índice desta linha é 3.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m[3] = ['Thu',0,0,0,0]

print(m)

Quando o código acima é executado, ele produz o seguinte resultado -

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '0' '0' '0' '0']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]