NumPy: E/S de Arquivos
Última atualização: 2026-08-26
1. O que Você Aprenderá
- ❶ Salvando e carregando arquivos
.npy(array único) - ❷ Salvando e carregando arquivos
.npz(múltiplos arrays) - ❸ E/S de arquivos CSV/texto com
loadtxtesavetxt - ❹ Arrays mapeados em memória para grandes datasets
2. Conceitos-Chave
(1) Formato .npy
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)
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
# 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 ⭐)
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 leituraCarregado: [1 2 3 4 5] Mesmos dados: True
▶ Exemplo: E/S de arquivos CSV (Dificuldade ⭐⭐)
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 leituraCSV 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 ⭐⭐)
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 leituraChaves: ['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.genfromtxtcom o parâmetrofilling_valuespara especificar um valor padrão para entradas ausentes.
📖 Resumo
np.save/np.load: array único no formato .npy (rápido, compacto, preserva dtype)np.savez/np.load: múltiplos arrays no formato .npz (dicionário comprimido)np.savetxt/np.loadtxt: E/S de arquivos CSV/textonp.genfromtxt: lida com valores ausentes e tipos mistos- Arrays mapeados em memória:
mmap_mode='r'para grandes datasets
📝 Exercícios
-
Básico (Dificuldade ⭐): Crie um array, salve-o como .npy e .csv, carregue ambos de volta e compare os valores carregados.
-
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.
-
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.