Conceitos de
Vetores e Matrizes
para Ciência de Dados
Programação em Python com a bibliota Numpy
01
Introdução ao
Numpy
Programação em Python com a bibliota Numpy
Introdução
NumPy (Numerical Python) é a biblioteca central para
computação científica em Python. Seu principal objeto é
o ndarray (array n-dimensional), uma estrutura de dados
poderosa que fornece um contêiner eficiente para
grandes conjuntos de dados numéricos.
Por que é essencial?
A necessidade do NumPy surge das limitações da lista padrão do Python.
Embora as listas do Python sejam flexíveis (podem conter tipos de dados
mistos), elas são ineficientes para operações numéricas em massa. Cada
elemento em uma lista Python é um objeto separado, e as operações sobre
elas são executadas através de loops lentos do interpretador Python.
E com o ndarray resolve isso?
Homogeneidade: Um ndarray é um Eficiência de Memória: Essa
“arranjo multidimensional homogeneidade permite que o
homogêneo" , o que significa que NumPy armazene os dados em um
todos os seus elementos devem ser bloco contínuo de memória, sem a
do mesmo tipo de dado (por sobrecarga de ponteiros e tipos de
exemplo, todos int ou todos float). objeto que as listas Python exigem.
02
Criação de Arrays:
Sintaxe e Exemplos
Programação em Python com a bibliota Numpy
Convertendo Estruturas Python
[Link](): A forma mais básica de criar um array é converter uma sequência Python
existente, como uma lista ou tupla:
■ Sintaxe: [Link](sequencia)
■ Exemplo:
import numpy as np
lista = [1, 2, 3, 4, 5]
# Array 1D a partir de uma lista
arr1d = [Link](lista)
Intervalos Numéricos
[Link](): Semelhante à função range nativa do Python, [Link] retorna valores
uniformemente espaçados dentro de um intervalo:
■ Sintaxe: [Link](sequencia)
■ Exemplo:
# Números de 0 (incluso) a 10 (excluso)
arr = [Link](0, 10)
# Números de 0 a 10, com passo 2
arr_step = [Link](0, 10, 2)
Intervalos com Número Definido de Pontos
[Link](): Esta função é crucial para plotagem e computação científica. Em vez
de um passo (step), você especifica o número total de pontos (num) que deseja
entre o começo e o fim:
■ Sintaxe: [Link](sequencia)
■ Exemplo:
# 5 números uniformemente espaçados entre 0
e 1 (incluso)
arr_lin = [Link](0, 1, 5)
# array([0. , 0.25, 0.5 , 0.75, 1. ])
# 100 pontos entre 0 e 2*pi
x = [Link](0, 2 * [Link], 100)
Arrays Pré-alocados
[Link](), [Link](), [Link](): É comum criar arrays de um determinado
tamanho, pré-preenchidos com zeros, uns ou “vazios" de memória :
■ Sintaxe: [Link](sequencia)
■ Exemplo:
# Nota: por padrão, essas funções criam uma
matriz quadrada (n x n) caso só um número
seja dado nos parâmetros
arr_z = [Link](5)
# cria uma matriz 5x5 onde todos elementos
são zeros
# Uma matriz 2x3 de uns
arr_o = [Link](shape=(2, 3))
03
Atributos e
inspeção de arrays
Programação em Python com a bibliota Numpy
A "Identidade" do
Array
Depois de criar um array, as primeiras coisas a fazer são
inspecionar seus atributos para entender sua
"identidade". Esses atributos não são funções; são
metadados armazenados no objeto ndarray.
Sintaxes de Inspeção
Comando Descrição
Retorna o número de dimensões (eixos) do array. Um vetor é 1D, uma
[Link]
matriz é 2D, etc..
Retorna uma tupla de inteiros que indica o tamanho do array em cada
[Link]
dimensão. Esta é indiscutivelmente a propriedade mais importante.
[Link] Retorna o número total de elementos no array.
[Link] Retorna o tipo de dado dos elementos no array (ex: int, float, bool).
Exemplos
import numpy as np
arr = [Link]([1, 2, 3, 4, 5])
print(f"Dimensões (ndim): {[Link]}") # Saída: 1
print(f"Forma (shape): {[Link]}") # Saída: (5,)
print(f"Tamanho (size): {[Link]}") # Saída: 5
print(f"Tipo (dtype): {[Link]}") # Saída: int64
import numpy as np
arr = [Link]([[0, 1], [2, 3], [4, 5]])
print(f"Dimensões (ndim): {[Link]}") # Saída: 2
print(f"Forma (shape): {[Link]}") # Saída: (3, 2)
print(f"Tamanho (size): {[Link]}") # Saída: 6
print(f"Tipo (dtype): {[Link]}") # Saída: int64
04
Manipulação
de Arrays
Programação em Python com a bibliota Numpy
Indexação e Fatiamento
A indexação e o fatiamento em ndarrays 1D funcionam de forma idêntica às listas
Python. Para arrays multidimensionais, a sintaxe é expandida, usando vírgulas para
separar os índices de cada eixo:
■ Sintaxe: arr[indice_eixo_0, indice_eixo_1,...]
■ Exemplo:
arr = [Link]([[0, 1], [2, 3], [4, 5]])
# Selecionar um único elemento (linha 0, coluna 2)
elemento = arr[0,1] # Saída: 1
# Fatiar (Slicing): Obter as duas primeiras linhas (0 e 1)
linhas = arr[:2, :] # Saída: [[0 1] [2 3]]
# Obter a coluna do meio (índice 1)
coluna = arr[:, 1] # Saída: [1 3 5]
Remodelagem
Muitas vezes, os dados precisam ser reformatados sem alterar seu conteúdo. O
método [Link]() "dá uma nova forma a um array sem alterar seus dados",
desde que o número total de elementos (size) permaneça o mesmo :
■ Sintaxe: [Link](nova_forma)
■ Exemplo:
arr = [Link](12) # array([0, 1,..., 11])
[Link] # 12
# Remodelar para uma matriz 3x4
# 3 * 4 = 12, então é válido
matriz = [Link]((3, 4))
# O valor -1 infere automaticamente a dimensão
matriz_inferida = [Link]((3, -1)) # -1 é calculado como 4