Combinación de matrices con múltiples tipos de datos en NumPy
El deseo de concatenar matrices que contienen diferentes tipos de datos en una sola matriz con los tipos de datos correspondientes en cada columna plantea un desafío. Desafortunadamente, un enfoque común, el uso de np.concatenate(), convierte toda la matriz al tipo de datos de cadena, lo que genera ineficiencias en la memoria.
Para superar esta limitación, una solución viable implica emplear matrices de registros o matrices estructuradas.
Matrices de registros
Las matrices de registros permiten acceder a campos de datos individuales a través de atributos. Al especificar el tipo de datos de cada campo, se pueden combinar varios tipos de datos en una sola 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)
Salida:
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], dtype=[('keys', '|S1'), ('data', '<i8')])
Matrices estructuradas
Las matrices estructuradas son similar, ofreciendo la posibilidad de definir el tipo de datos de cada columna. Sin embargo, no admiten el acceso a atributos como matrices de registros:
arr = np.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
print(arr)
Salida:
array([('a', 0), ('b', 1)], dtype=[('keys', '|S1'), ('data', '<i8')])
Elección entre registros y matrices estructuradas
La elección entre matrices de registros y matrices estructuradas depende de los casos de uso individuales. Las matrices de registros brindan comodidad con el acceso a atributos, mientras que las matrices estructuradas pueden ser preferidas para estructuras de datos más complejas. Ambos enfoques ofrecen una manera conveniente de combinar matrices con diferentes tipos de datos en NumPy, brindando flexibilidad y eficiencia en la manipulación de datos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3