Numpy: La función de volcado ndarray (y cPickle directo) falla para matrices grandes (Trac # 1803)

Creado en 20 oct. 2012  ·  8Comentarios  ·  Fuente: numpy/numpy

_ Ticket original http://projects.scipy.org/numpy/ticket/1803 el 19-04-2011 por el usuario de trac meawoppl, asignado a unknown._

a = ceros ((300000, 1000))
f = abierto ("test.pkl", "w")

cPickle.dump (a, f)

SystemError Traceback (última llamada más reciente)

/ inicio / kddcup / code / matt / svd-projection / take5 /en()

SystemError: retorno de error sin conjunto de excepciones

O usando la función .dump:

a.dump ("test.pkl")

SystemError Traceback (última llamada más reciente)

/ inicio / kddcup / code / matt / svd-projection / take5 /en()

SystemError: resultado NULL sin error en PyObject_Call

No estoy seguro de si se trata de un error numpy o de Pickle / cPickle. En cualquier caso, un mensaje de error más instructivo sin duda ayudaría. Creo que el problema solo ocurre para matrices de más de 2 ** (32-1) bytes, pero tendría que experimentar más para estar seguro.

00 - Bug Other

Todos 8 comentarios

También me enfrento a este problema.

@zhlsk no intentó más ni investigó si hay una solución en Python, pero creo que esto no es un problema de número, sino de Python, ya que: cPickle.dump(a.tostring(), f) también me falla igual y eso es solo un gran cadena entonces y no tiene nada que ver con numpy. Sin embargo, el uso de las funciones de guardado numpy no debería tener este tipo de problemas.

@seberg Gracias por tu respuesta. Tienes razón. Es un problema de Python: http://bugs.python.org/issue11564

En principio, probablemente podríamos solucionar el error de todos modos pasando grandes
matrices al pickler como una serie de objetos, cada uno de los cuales encaja en el
límites y reconstruir la matriz en el momento oportuno. Suena como el
el límite está en el tamaño de una matriz de un solo byte.
El 14 de diciembre de 2012 a las 22:11, "zhlsk" [email protected] escribió:

@seberg https://github.com/seberg Gracias por su respuesta. Tienes razón.
Es un problema de Python: http://bugs.python.org/issue11564

-
Responda a este correo electrónico directamente o véalo en Gi

¿Algún progreso en esto? Parece que numpy.save y numpy.savetxt se ven afectados por este problema. ¿Alguna solución?

Es un error en Python, la solución es actualizar a una versión más nueva (se corrigió en Python 3.3), y la solución es seleccionar tu matriz en partes más pequeñas o usar algún otro formato de archivo que no sea Python pickles.

np.savetxt no se ve afectado por esto, y np.save solo se ve afectado por las matrices de objetos.

Clausura.

Recibo esto cuando trato de seleccionar una matriz dispersa de 11,314 x 8,463,980,778 con 352,451,719 elementos almacenados en formato scipy.sparse.csr_matrix. Versión de Python: Python 2.7.10 | Anaconda 2.3.0 (x86_64) | (predeterminado, 28 de mayo de 2015, 17:04:42)

¿Fue útil esta página
0 / 5 - 0 calificaciones