NumPy: Operações com Strings
Última atualização: 2026-08-26
1. O que Você Aprenderá
- ❶ Métodos de string vetorizados:
np.char.upper,np.char.lower, etc. - ❷ Correspondência de padrões com
np.char.find,np.char.count - ❸ Junção, divisão e preenchimento de strings
- ❹ Quando usar strings NumPy vs strings Python
2. Conceitos-Chave
import numpy as np
names = np.array(['alice', 'bob', 'charlie'])
# Operações de string vetorizadas
print(np.char.upper(names)) # ['ALICE' 'BOB' 'CHARLIE']
print(np.char.capitalize(names)) # ['Alice' 'Bob' 'Charlie']
print(np.char.title(names)) # ['Alice' 'Bob' 'Charlie']
# Correspondência de padrões
print(np.char.find(names, 'li')) # [ 2 -1 3]
print(np.char.count(names, 'e')) # [1 0 1]
# Juntar e dividir
print(np.char.join('-', names)) # ['a-l-i-c-e' 'b-o-b' 'c-h-a-r-l-i-e']
print(np.char.split(names, 'i')) # [['al', 'ce'], ['bob'], ['charl', 'e']]
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
▶ Exemplo: Operações básicas com strings (Dificuldade ⭐)
import numpy as np
names = np.array(['alice', 'bob', 'charlie', 'diana'])
print("Maiúsculas:", np.char.upper(names))
print("Minúsculas:", np.char.lower(names))
print("Capitalizar:", np.char.capitalize(names))
print("Título:", np.char.title(names))
print("Inverter caixa:", np.char.swapcase(names))
Output:
TEXT 📖 Somente leituraMaiúsculas: ['ALICE' 'BOB' 'CHARLIE' 'DIANA'] Minúsculas: ['alice' 'bob' 'charlie' 'diana'] Capitalizar: ['Alice' 'Bob' 'Charlie' 'Diana'] Título: ['Alice' 'Bob' 'Charlie' 'Diana'] Inverter caixa: ['ALICE' 'BOB' 'CHARLIE' 'DIANA']
▶ Exemplo: Correspondência de padrões em strings (Dificuldade ⭐⭐)
import numpy as np
emails = np.array(['alice@work.com', 'bob@home.org', 'charlie@school.edu'])
# Encontrar posição do '@'
at_pos = np.char.find(emails, '@')
print("Posições de @:", at_pos)
# Contar ocorrências de 'e'
e_count = np.char.count(emails, 'e')
print("Contagens de 'e':", e_count)
# Verificar início/fim
print("Começa com 'a':", np.char.startswith(emails, 'a'))
print("Termina com '.edu':", np.char.endswith(emails, '.edu'))
Output:
TEXT 📖 Somente leituraPosições de @: [5 3 7] Contagens de 'e': [1 1 2] Começa com 'a': [ True False False] Termina com '.edu': [False False True]
▶ Exemplo: Junção e preenchimento de strings (Dificuldade ⭐⭐)
import numpy as np
words = np.array(['hello', 'world', 'numpy'])
# Juntar caracteres com separador
print("Juntar:", np.char.join('-', words))
# Preencher strings para largura fixa
print("Preencher centro:\n", np.char.center(words, 10, fillchar='='))
print("Preencher esquerda:\n", np.char.ljust(words, 10, fillchar='.'))
print("Preencher direita:\n", np.char.rjust(words, 10, fillchar='.'))
# Remover espaços em branco
messy = np.array([' alice ', ' bob ', ' charlie '])
print("Sem espaços:", np.char.strip(messy))
Output:
TEXT 📖 Somente leituraJuntar: ['h-e-l-l-o' 'w-o-r-l-d' 'n-u-m-p-y'] Preencher centro: ['==hello===' '==world====' '==numpy===='] Preencher esquerda: ['hello.....' 'world.....' 'numpy.....'] Preencher direita: ['.....hello' '.....world' '.....numpy'] Sem espaços: ['alice' 'bob' 'charlie']
P: Operações de string do NumPy são mais rápidas que loops Python? R: Sim, para arrays grandes — a vetorização em nível C é muito mais rápida que iterar por strings Python. Mas para strings individuais, os métodos nativos do Python são mais simples.
P: Qual é o dtype para arrays de strings? R:
np.str_(ou'U'para Unicode). Arrays de strings têm um comprimento máximo fixo, que determina o uso de memória. Strings de comprimento variável usam dtypeobject.
P: Posso usar expressões regulares? R: O NumPy não tem suporte nativo a regex. Use
np.vectorize(re.search)ou o acessador.str.contains()do Pandas para operações regex em arrays.
❓ Perguntas Frequentes
P: O que é a coisa mais importante a lembrar? R: As operações do NumPy são vetorizadas — evite loops Python para melhor desempenho.
P: Onde posso aprender mais? R: Consulte a documentação oficial do NumPy em numpy.org para referências detalhadas e tópicos avançados.
P: Isso funciona com o NumPy 2.x? R: Sim — todos os exemplos são compatíveis com o NumPy 2.x. Algumas APIs mais antigas (como np.random.seed) ainda são suportadas, mas as alternativas modernas são recomendadas.
📖 Resumo
- O módulo
np.charfornece operações de string vetorizadas: upper, lower, capitalize, title - Correspondência de padrões:
find,count,startswith,endswith - Join, split, strip, pad, replace — todos vetorizados
- Arrays de strings têm dtype de largura fixa (
U{n}) — memória é pré-alocada - Para operações complexas com strings, considere o acessador
.strdo Pandas
📝 Exercícios
-
Básico (Dificuldade ⭐): Crie um array de 5 nomes. Aplique
upper,lower,capitalizeetitlea todos os elementos. -
Intermediário (Dificuldade ⭐⭐): Crie um array de endereços de email. Use
np.char.findpara encontrar a posição de '@' em cada email. Depois usenp.char.splitpara extrair a parte do domínio. -
Desafio (Dificuldade ⭐⭐⭐): Crie um array de 1000 strings aleatórias. Compare o desempenho de
np.char.uppercom uma compreensão de lista Python. Registre o fator de aceleração.