Estoy comenzando con NumPy, así que me pueden faltar algunos conceptos básicos ...¿La mejor manera de crear una matriz NumPy a partir de un diccionario?
¿Cuál es la mejor manera de crear una matriz NumPy a partir de un diccionario cuyos valores son listas?
Algo como esto:
d = { 1: [10,20,30] , 2: [50,60], 3: [100,200,300,400,500] }
debe convertirse en algo así como:
data = [
[10,20,30,?,?],
[50,60,?,?,?],
[100,200,300,400,500]
]
Voy a hacer algunas estadísticas básicas en cada fila, por ejemplo:
deviations = numpy.std(data, axis=1)
Preguntas:
¿Cuál es la mejor/más eficiente forma de crear el archivo numpy.array del diccionario? El diccionario es grande; un par de millones de claves, cada una con ~ 20 elementos.
El número de valores para cada 'fila' es diferente. Si entiendo correctamente numpy quiere un tamaño uniforme, entonces, ¿qué debo completar para los elementos faltantes para hacer feliz a std()?
Actualización: Una cosa que se olvidó de mencionar - mientras que las técnicas de pitón son razonables, está limitado a una sola CPU (por ejemplo, un bucle durante un par de millones de artículos es rápido.). Las operaciones numeradas se adaptan muy bien al hardware y afectan a todas las CPU, por lo que son atractivas.
que estoy haciendo la numpy.std en un bucle ahora, y tienes razón, el ahorro de memoria son importantes. Sin embargo, me gustaría hacer al menos una comparación de velocidad con la versión numpy. – Parand
El problema es que numpy.std() se creó para aceptar solo arreglo de arreglo de tamaño. Entonces, la única forma en que veo hacer esta prueba es agrupar todos los registros del mismo tamaño y llamar a numpy.std() en cada uno de ellos. – Mapad
¿No debería ser realmente CPython Cython? ¿Lo he entendido mal? – batbrat