NumPy: Criando Arrays

Última atualização: 2026-08-26

Criando Arrays

1. O que Você Aprenderá



2. História

Charlie precisa de 100 ângulos igualmente espaçados de 0 a 2π. Loop Python: 5 linhas. np.linspace: 1 linha.

linspace(0, 2*pi, 100) significa "pegar 100 pontos igualmente espaçados de 0 a 2π" — o código é a documentação.



3. Conceitos-Chave

(1) Criando a Partir de Objetos Python

A abordagem mais básica — converter listas Python (ou listas aninhadas) para arrays NumPy:

PYTHON
import numpy as np

a = np.array([1, 2, 3])           # 1D a partir de lista
b = np.array([[1, 2], [3, 4]])    # 2D a partir de lista aninhada
c = np.array([1, 2, 3], dtype=float)  # especificar dtype
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

Comparação de Métodos de Criação

Método Sintaxe Fonte de Entrada Uso Típico
np.array np.array(obj) Lista/tupla Python Converter dados existentes
np.arange np.arange(start, stop, step) Intervalo numérico Sequências de inteiros/floats
np.linspace np.linspace(a, b, n) Início, fim, contagem Contagem precisa de elementos
np.zeros np.zeros(shape) Shape Inicializar com zeros
np.ones np.ones(shape) Shape Inicializar com uns
np.full np.full(shape, val) Shape + valor de preenchimento Inicializar com qualquer valor
np.random.rand np.random.rand(n) Contagem de elementos Inicialização aleatória
np.fromfunction np.fromfunction(fn, shape) Função + shape Gerar por fórmula

(2) Sequências Numéricas

arange

PYTHON
np.arange(5)            # [0 1 2 3 4]
np.arange(1, 10, 2)     # [1 3 5 7 9]
np.arange(0, 1, 0.3)    # [0.  0.3 0.6 0.9]
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

linspace

PYTHON
np.linspace(0, 1, 5)    # [0.   0.25 0.5  0.75 1.  ]
np.linspace(0, 2*np.pi, 100)  # 100 pontos de 0 a 2pi
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

logspace

PYTHON
np.logspace(1, 3, 3)    # [  10.  100. 1000.]  -- 10^1, 10^2, 10^3
np.logspace(0, 2, 5)    # 5 pontos de 10^0 a 10^2
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

arange vs linspace vs logspace

Característica arange linspace logspace
Controle início, fim, passo início, fim, número exp_início, exp_fim, número
Inclui o fim Não Sim Sim
Espaçamento Linear Linear Logarítmico
Precisão de float Pode ter erros Exata Exata
Uso típico Índices inteiros Amostras para gráficos Escalas de frequência/log

(3) Arrays Pré-Preenchidos

PYTHON
np.zeros(3)             # [0. 0. 0.]
np.zeros((2, 3))        # matriz 2x3 de zeros
np.ones((2, 2))         # 2x2 de uns
np.eye(3)               # identidade 3x3
np.full((2, 3), 7)      # 2x3 preenchido com 7
np.empty((2, 2))        # 2x2 não inicializado (NÃO são zeros!)
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

zeros vs empty vs full

Função Valor Inicial Velocidade Segurança Caso de Uso
zeros Todos zeros Média Seguro Precisa de um valor inicial conhecido
empty Indefinido Rápida Inseguro Sobrescrever todos os elementos imediatamente
full Valor personalizado Média Seguro Precisa de um valor inicial diferente de zero

(4) Criação de Números Aleatórios

PYTHON
np.random.rand(3)           # 3 uniformes [0, 1)
np.random.rand(2, 3)        # 2x3 uniformes
np.random.randn(3)          # 3 normais padrão
np.random.randint(0, 10, 5) # 5 inteiros em [0, 10)
np.random.seed(42)          # definir semente para reprodutibilidade
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

Referência Rápida de Funções Aleatórias

Função Distribuição Intervalo Tipo de Retorno
rand(d0, d1, ...) Uniforme [0, 1) float
randn(d0, d1, ...) Normal padrão (-∞, +∞) float
randint(low, high, size) Inteiro uniforme [low, high) int
uniform(low, high, size) Uniforme [low, high) float
normal(loc, scale, size) Normal (-∞, +∞) float
choice(a, size) Uniforme discreta Elementos de a depende

(5) Leitura de Arquivos

PYTHON
data = np.loadtxt('data.txt')                    # texto simples
data = np.loadtxt('data.csv', delimiter=',')     # CSV
data = np.genfromtxt('data.csv', delimiter=',',  # lidar com ausentes
                     filling_values=0)
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

fromfunction — gerar arrays por função de coordenadas:

PYTHON
np.fromfunction(lambda i, j: i + j, (3, 3))
# [[0. 1. 2.]
#  [1. 2. 3.]
#  [2. 3. 4.]]
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

▶ Exemplo

TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

: arange vs linspace vs logspace (Dificuldade ⭐)

PYTHON
import numpy as np

# arange: baseado em passo
a = np.arange(0, 10, 2)       # [0 2 4 6 8]
print("arange:", a)

# linspace: baseado em número
b = np.linspace(0, 10, 6)     # 6 pontos: 0, 2, 4, 6, 8, 10
print("linspace:", b)

# logspace: logarítmico
c = np.logspace(1, 4, 4)      # [10, 100, 1000, 10000]
print("logspace:", c)
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
⚠️ Nota: O código abaixo precisa ser executado em um ambiente Python local.


▶ Exemplo

TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

: zeros / ones / eye / full (Dificuldade ⭐)

PYTHON
import numpy as np

z = np.zeros((2, 3))
print("zeros:\n", z)

o = np.ones((3, 2))
print("ones:\n", o)

e = np.eye(4)
print("eye:\n", e)

f = np.full((2, 3), 9.0)
print("full:\n", f)
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
⚠️ Nota: O código abaixo precisa ser executado em um ambiente Python local.


▶ Exemplo

TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

: Lista aninhada para array 2D (Dificuldade ⭐)

PYTHON
import numpy as np

data = [[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]

a = np.array(data)
print("shape:", a.shape)    # (3, 3)
print("dtype:", a.dtype)    # int64
print("ndim:", a.ndim)      # 2
print("array:\n", a)
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
⚠️ Nota: O código abaixo precisa ser executado em um ambiente Python local.


▶ Exemplo

TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.

: Geração de array aleatório (Dificuldade ⭐)

PYTHON
import numpy as np

np.random.seed(42)

print("rand(3):", np.random.rand(3))
print("randn(3):", np.random.randn(3))
print("randint(0,10,5):", np.random.randint(0, 10, 5))
print("uniform(0,1,3):", np.random.uniform(0, 1, 3))
print("normal(0,1,3):", np.random.normal(0, 1, 3))
TEXT 📖 Somente leitura
> **Saída:** Execute NumPy 2.x no seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem NumPy pré-instalado — instale localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
⚠️ Nota: O código abaixo precisa ser executado em um ambiente Python local.



4. Tabelas Comparativas

(1) Método de Criação por Caso de Uso

Necessidade Método Por Quê
Converter dados existentes np.array(data) Conversão direta
Sequência de inteiros np.arange(n) Leve
Sequência float precisa np.linspace(a, b, n) Contagem exata
Matriz de valor fixo np.full(shape, val) Qualquer valor de preenchimento
Matriz identidade np.eye(n) Álgebra linear
Inicialização aleatória np.random.rand(...) Pesos de ML
Carregar de arquivo np.loadtxt(file) Dados externos

(2) arange vs range do Python

Característica range np.arange
Retorna Iterador lazy ndarray (materializado)
Memória O(1) O(n)
Passo float Não Sim
Velocidade (iteração) Mais lento Mais rápido (vetorizado)
Caso de uso Looping Criação de arrays


5. Diagrama de Princípios

100%
graph TB
    A[Lista Python] -->|np.array| B[ndarray]
    C[arange / linspace] --> B
    D[zeros / ones / eye] --> B
    E[funções aleatórias] --> B
    F[arquivo: loadtxt] --> B
    B --> G[dtype uniforme]
    B --> H[memória contígua]
    B --> I[operações vetorizadas]


❓ Perguntas Frequentes

P: Qual a diferença entre arange e linspace? R: arange recebe um tamanho de passo e não inclui o valor final. linspace recebe uma contagem e inclui ambos os extremos. Use arange para sequências de inteiros, linspace quando precisa de um número específico de pontos.

P: empty() é realmente vazio? R: Não — ela aloca a memória mas não a inicializa. Os "valores" são o que quer que estivesse naquela memória antes. É mais rápida mas perigosa. Só use quando vai preencher todos os elementos em seguida.

P: Qual é a forma moderna de gerar números aleatórios? R: Use np.random.default_rng(seed) para criar um objeto Generator, depois chame .random(), .normal(), .integers(), etc. O antigo np.random.seed() ainda funciona mas é considerado legado.

P: Posso criar um array a partir de uma expressão geradora? R: np.array(x for x in range(10)) não funciona — cria um array 0D contendo o objeto gerador. Use np.fromiter((x for x in range(10)), dtype=int) em vez disso.

P: Como lidar com dados ausentes ao carregar CSV? R: Use np.genfromtxt('file.csv', delimiter=',', filling_values=0) para substituir valores ausentes por um padrão, ou np.nan.


📖 Resumo



📝 Exercícios

  1. Básico (Dificuldade ⭐): Crie os seguintes arrays: (a) inteiros de 0 a 9, (b) 10 pontos igualmente espaçados de 0 a 1, (c) uma matriz identidade 3x3, (d) um array 2x4 de todos 7s.

  2. Intermediário (Dificuldade ⭐⭐): Use np.loadtxt para ler um arquivo CSV com 3 colunas: nome (string), idade (int), salário (float). Use np.genfromtxt com dtype=None para lidar com os tipos mistos. Imprima o salário médio.

  3. Desafio (Dificuldade ⭐⭐⭐): Compare o desempenho de criar 10 milhões de números aleatórios usando np.random.rand(10_000_000) vs uma list comprehension Python. Registre a diferença de tempo e memória. Depois use np.random.default_rng() e compare a velocidade.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%