Combinação de arrays com vários tipos de dados em NumPy
O desejo de concatenar arrays contendo diferentes tipos de dados em um único array com tipos de dados correspondentes em cada posição de coluna um desafio. Uma abordagem comum, usando np.concatenate(), infelizmente converte todo o array para o tipo de dados string, levando a ineficiências de memória.
Para superar essa limitação, uma solução viável envolve o emprego de arrays de registros ou arrays estruturados.
Matrizes de registros
Matrizes de registros permitem que campos de dados individuais sejam acessados por meio de atributos. Ao especificar o tipo de dados de cada campo, vários tipos de dados podem ser combinados em uma única matriz:
import numpy as np
a = np.array(['a', 'b', 'c', 'd', 'e'])
b = np.arange(5)
records = np.rec.fromarrays((a, b), names=('keys', 'data'))
print(records)
Saída:
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], dtype=[('keys', '|S1'), ('data', '<i8')])
Matrizes Estruturadas
Matrizes Estruturadas são semelhante, oferecendo a capacidade de definir o tipo de dados de cada coluna. No entanto, eles não suportam acesso a atributos como matrizes de registros:
arr = np.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
print(arr)
Saída:
array([('a', 0), ('b', 1)], dtype=[('keys', '|S1'), ('data', '<i8')])
Escolhendo entre registro e matrizes estruturadas
A escolha entre matrizes de registros e matrizes estruturadas depende de casos de uso individuais. Matrizes de registros fornecem conveniência com acesso a atributos, enquanto matrizes estruturadas podem ser preferidas para estruturas de dados mais complexas. Ambas as abordagens oferecem uma maneira conveniente de combinar arrays com diferentes tipos de dados em NumPy, proporcionando flexibilidade e eficiência na manipulação de dados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3