NumPy: E/S de Arquivos

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

1. O que Você Aprenderá



2. Conceitos-Chave

(1) Formato .npy

PYTHON
import numpy as np

a = np.array([1, 2, 3, 4, 5])

# Salvar
np.save('array.npy', a)

# Carregar
b = np.load('array.npy')
print(b)  # [1 2 3 4 5]

(2) Formato .npz (Múltiplos Arrays)

PYTHON
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

# Salvar múltiplos arrays
np.savez('data.npz', x=x, y=y)

# Carregar
data = np.load('data.npz')
print(data['x'])  # [1 2 3]
print(data['y'])  # [4 5 6]

(3) Arquivos CSV/Texto

PYTHON
# Salvar em CSV
data = np.array([[1, 2, 3],
                 [4, 5, 6]])
np.savetxt('data.csv', data, delimiter=',', fmt='%.2f')

# Carregar de CSV
loaded = np.loadtxt('data.csv', delimiter=',')

▶ Exemplo: Salvando e carregando arquivos .npy (Dificuldade ⭐)

PYTHON
import numpy as np
import os

# Criar e salvar um array
a = np.array([1, 2, 3, 4, 5])
np.save('example.npy', a)

# Carregar de volta
b = np.load('example.npy')
print("Carregado:", b)
print("Mesmos dados:", np.array_equal(a, b))

# Limpar
os.remove('example.npy')

Output:

TEXT 📖 Somente leitura
Carregado: [1 2 3 4 5]
Mesmos dados: True

▶ Exemplo: E/S de arquivos CSV (Dificuldade ⭐⭐)

PYTHON
import numpy as np
import os

data = np.array([[1.5, 2.3, 3.7],
                 [4.1, 5.6, 6.2],
                 [7.8, 8.4, 9.9]])

# Salvar em CSV
np.savetxt('data.csv', data, delimiter=',', fmt='%.2f',
           header='x,y,z', comments='')

# Carregar de CSV
loaded = np.loadtxt('data.csv', delimiter=',')
print("CSV carregado:\n", loaded)

# Carregar colunas específicas
col_0 = np.loadtxt('data.csv', delimiter=',', usecols=0)
print("Primeira coluna:", col_0)

os.remove('data.csv')

Output:

TEXT 📖 Somente leitura
CSV carregado:
 [[1.5 2.3 3.7]
 [4.1 5.6 6.2]
 [7.8 8.4 9.9]]
Primeira coluna: [1.5 4.1 7.8]

▶ Exemplo: Trabalhando com arquivos .npz (Dificuldade ⭐⭐)

PYTHON
import numpy as np
import os

x = np.linspace(0, 10, 100)
y = np.sin(x)
z = np.cos(x)

# Salvar múltiplos arrays
np.savez('trig.npz', x=x, y=y, z=z)

# Carregar e acessar por nome
data = np.load('trig.npz')
print("Chaves:", list(data.keys()))
print("x[:5]:", data['x'][:5])
print("y[:5]:", data['y'][:5])

os.remove('trig.npz')

Output:

TEXT 📖 Somente leitura
Chaves: ['x', 'y', 'z']
x[:5]: [0.         0.1010101  0.2020202  0.3030303  0.4040404]
y[:5]: [0.         0.10083842 0.20064886 0.2984138  0.3931366]


❓ Perguntas Frequentes

P: Qual é a vantagem do .npy sobre CSV? R: .npy preserva o dtype exatamente, é mais rápido para ler/escrever e ocupa menos espaço em disco. CSV é legível por humanos e portátil, mas mais lento e perde informações de dtype.

P: O que é um array mapeado em memória? R: np.load('file.npy', mmap_mode='r') carrega o arquivo como um array mapeado em memória — ele não carrega o arquivo inteiro na memória de uma vez. Útil para datasets maiores que a RAM.

P: Como lidar com valores ausentes em CSV? R: Use np.genfromtxt com o parâmetro filling_values para especificar um valor padrão para entradas ausentes.


📖 Resumo



📝 Exercícios

  1. Básico (Dificuldade ⭐): Crie um array, salve-o como .npy e .csv, carregue ambos de volta e compare os valores carregados.

  2. Intermediário (Dificuldade ⭐⭐): Crie 3 arrays, salve-os em um único arquivo .npz, carregue-os de volta e verifique se cada array foi corretamente restaurado.

  3. Desafio (Dificuldade ⭐⭐⭐): Crie um array grande (1000x1000), salve-o como .npy e carregue-o com mmap_mode='r'. Acesse um único elemento e explique por que isso é mais eficiente em memória para grandes datasets.

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%