Parece que hay muchas opciones para que Python interactúe con SQLite (sqlite3, atpy) y HDF5 (h5py, pyTables) - Me pregunto si alguien tiene experiencia en usar estos junto con matrices numpy o tablas de datos (matrices estructuradas/de registros), y cuál de ellas se integra perfectamente con módulos "científicos" (numpy, scipy) para cada formato de datos (SQLite y HDF5).exportando desde/importando a numpy, scipy en formatos SQLite y HDF5
Respuesta
La mayor parte depende de su caso de uso.
que tienen mucha más experiencia en tratar con los diversos métodos basados en HDF5 que bases de datos relacionales tradicionales, así que no puedo comentar demasiado en las bibliotecas de SQLite para pitón ...
Al menos en lo que h5py
vs pyTables
, ambos ofrecen un acceso muy sencillo a través de matrices numpy, pero están orientados a casos de uso muy diferentes.
Si tiene datos n-dimensionales que desea acceder rápidamente a una arbitraria basado en índices rebanada de, entonces es mucho más fácil de usar h5py
. Si tiene datos más parecidos a una tabla y desea consultarlos, entonces pyTables
es una opción mucho mejor.
h5py
es un contenedor relativamente "vainilla" alrededor de las bibliotecas HDF5 en comparación con pyTables
. Esto es algo muy bueno si va a acceder regularmente a su archivo HDF desde otro idioma (pyTables
agrega algunos metadatos adicionales). h5py
puede hacer un lote , pero para algunos casos de uso (por ejemplo, pyTables
) necesitará pasar más tiempo ajustando las cosas.
pyTables
tiene algunas realmente buenas características. Sin embargo, si sus datos no se parecen mucho a una tabla, probablemente no sea la mejor opción.
Para dar un ejemplo más concreto, trabajo mucho con matrices de datos bastante grandes (decenas de GB) de 3 y 4 dimensiones. Son conjuntos homogéneos de flotantes, ints, uint8s, etc. Por lo general, quiero acceder a un pequeño subconjunto de todo el conjunto de datos. h5py
hace esto muy muy simple, y hace un buen trabajo de adivinar automáticamente un tamaño de fragmento razonable. Tomar un trozo o porción arbitraria del disco es mucho, mucho más rápido que para un archivo memmapped simple. (Énfasis en arbitrario ... Obviamente, si desea tomar una porción "X" completa, entonces una matriz memmapped ordenada por C es imposible de superar, ya que todos los datos en una división "X" son adyacentes en el disco).
Como un ejemplo de contador, mi esposa recopila datos de una amplia gama de sensores que muestrean intervalos de minutos a segundos durante varios años. Ella necesita almacenar y ejecutar consultas arbitrarias (y cálculos relativamente simples) en sus datos. pyTables
hace que este caso de uso sea muy fácil y rápido, y aún tiene algunas ventajas sobre las bases de datos relacionales tradicionales. (Particularmente en términos de uso de disco y velocidad a la que se puede leer en la memoria un gran fragmento de datos (basado en índices)
Gracias - este es exactamente el tipo de información que estaba buscando al contrastar 'h5py' y' pyTables' ... pero entonces no es necesariamente lo que va con NumPy, pero que va bien con los datos reales en la matriz NumPy. Voy a publicar la parte 'SQLite' como una pregunta separada. – hatmatrix
@JoeKington: Nota al margen: no estoy seguro de que "la matriz memmapped ordenada por C sea imposible de superar": copiar datos con memcpy() puede ser más lento que transferir datos comprimidos y descomprimirlos cuando llega al procesador (http: //blosc.pytables.org/trac).El efecto neto es que procesar datos de matriz comprimida puede ser más rápido que procesar datos de matriz sin comprimir. – EOL
- 1. Configuración recomendada para Scitools, NumPy y SciPy
- 2. descarga-tragar con numpy/scipy
- 3. Izquierda inversa en numpy o scipy?
- 4. agrupando datos en python con scipy/numpy
- 5. cómo exportar el archivo HDF5 a NumPy usando H5PY?
- 6. matrices de rebanado en numpy/SciPy
- 7. ¿Cuánto de NumPy y SciPy están en C?
- 8. Scipy interpolación en una matriz de numpy
- 9. mlpy, numpy, scipy en Google App Engine
- 10. ¿Función alternativa al modo Scipy en Numpy?
- 11. FFT en Matlab y numpy/scipy dan resultados diferentes
- 12. enfoque vectorizada a binning con numpy/scipy en Python
- 13. Scipy/Numpy Análisis de frecuencia FFT
- 14. Almacenamiento de la matriz numpy dispersa en HDF5 (PyTables)
- 15. Numpy and Scipy con Amazon Elastic MapReduce
- 16. Python/Numpy/Scipy - Conversión de cadena a función matemática
- 17. Desbordamiento en exp en scipy/numpy en Python?
- 18. Creando una matriz en numpy/scipy por iteración en Python?
- 19. agrupación jerárquica en correlaciones en Python scipy/numpy?
- 20. advertencias de Búsquedas Python/errores a un número de línea en numpy y SciPy
- 21. Ignorando -Inf valores en matrices utilizando numpy/scipy en Python
- 22. Suma de diferencias cuadradas (SSD) en numpy/scipy
- 23. Funcionalidad similar a Scipy en Java/Scala?
- 24. Transformaciones corporales rígidas 2D rápidas en numpy/scipy
- 25. ANCOVA en Python con estadísticas de Scipy/Numpy
- 26. ¿Cómo manejas los datos faltantes usando numpy/scipy?
- 27. Quiero usar NumPy/SciPy. ¿Debería usar Python 2 o 3?
- 28. Python (NumPy, SciPy), encontrar el espacio nulo de una matriz
- 29. Reconocimiento de formas con numpy/scipy (quizás watershed)
- 30. ¿Hay un conjunto de pruebas para numpy/scipy?
¿Está preguntando por guardar datos numpy en tablas SQLite? –
Sí, parte de esto ... – hatmatrix