Matrizes (arrays) Multidimensionais e NumPy

A matriz multidimensional (multi-dimensional arrays, em inglês) é uma das características fundamentais para vários frameworks de Inteligência Artificial (IA). Mas, o que é uma matriz ou array em programação? Revisamos alguns termos básicos.

  • Array ou matriz: é uma estrutura de dados que consiste em uma “lista de dados”.
  • Class e object: Uma classe (class) é um modelo ou template (blueprint) que fornece instruções sobre como criar objetos. Da sua parte, um objeto é uma “combinação de variáveis, funções ou estruturas de dados”.
  • Float ou Ponto flutuante: um número com casas decimais.
  • Function ou função: é um “programa que executa uma tarefa específica” e retorna um valor versus um procedimento que “executa alguma operação, mas não retorna um valor”.
  • Integer ou inteiros: número inteiro sem decimais. Representado com a nomenclatura ‘int’ no código do software.
  • List ou lista: valores armazenados em uma sequência.
  • Loop: um “código que é executado repetidamente”.
  • Matriz multidimensional: “uma matriz com 2 ou mais dimensões” e “em uma matriz, as 2 dimensões são representadas por linhas e colunas”.
  • String ou linha de texto: em um programa, geralmente é texto que se encontra entre aspas.
  • Tensor: é a “entidade matemática que vive em uma estrutura e interage com outras entidades matemáticas” que pode ser representada por um cubo O-D, 1-D ou 3-D.
  • Variável: é um valor armazenado em um endereço de memória.

O instrutor online Sam Lavigne explica em um vídeo o propósito de uma matriz. Ele cria um programa simples onde duas bolhas flutuam da parte inferior da tela para a superior. No programa, as duas bolhas (objetos) são representadas da seguinte forma:

Bubble b1;

Bubble b2;

Se um programador quiser cinco bolhas no programa, basta adicionar mais linhas de código como essas:

Bubble b1;

Bubble b2;

Bubble b3;

Bubble b4;

Bubble b5;

O que acontece se o programador quiser um milhão de bolhas? O uso deste método não é viável. Em vez disso, o programador pode criar uma matriz que é uma “lista de dados” em uma única linha de código.

Além disso, Sam demonstra como os valores no programa são armazenados na RAM. Na ilustração abaixo (feita pelo Sam), no lado esquerdo, um único número inteiro (int) igual a 5 é armazenado em um local na RAM chamado val. No lado direito, vários números inteiros denominados valores são armazenados na RAM como uma lista.   

This image has an empty alt attribute; its file name is image-1024x477.png
Fonte: Youtube

Embora as matrizes sejam úteis em alguns casos, há casos em que se torna complicado. Joe James, um instrutor online descreve neste vídeo a matriz NumPy de Python como uma “biblioteca de matrizes multidimensionais de alto desempenho que é usada para análise numérica”. Ele afirma que os três principais benefícios das matrizes NumPy são: 

1) Economia do tempo de codificação.

2) Execução mais rápida do que as matrizes padrão. 

3) Menor uso de memória. 

Um caso de uso que funciona melhor com uma matriz o array NumPy é quando um programador precisa aplicar uma “operação matemática a cada elemento na matriz”. Na ilustração abaixo, há um código para executar esta operação com uma lista e um array NumPy.  

Using Python List

for i in range (len(my_list)):

         my_list [i] *=3

Using NumPy Array

my_array *=3

Como Joe demonstra no vídeo, quando uma operação matemática é feita com uma lista, o código usa um “loop do tipo for para iterar através da lista antes de poder multiplicá-la por um 3 à medida que passa por cada elemento” (representado pelo código no topo). Com NumPy, apenas uma linha de código é necessária (código na parte inferior). 

O desenvolvedor Keith Galli afirma que os arrays NumPy podem ser usados para armazenar dados em matrizes 1-D, matrizes 2-D, matrizes 3-D ou quantas forem necessárias. As listas Python não suportam arrays multidimensionais. 

Fonte: Github

A razão pela qual uma matriz NumPy é mais rápida é que ela armazena dados de maneira contígua (ilustrada abaixo), enquanto uma lista armazena dados em diferentes seções da RAM. Assim, uma lista leva mais tempo para armazenar dados e ler/recuperar dados. 

Fonte: Keith Galli

Scroll to Top