Numpy: La fonction de vidage ndarray (et cPickle direct) échoue pour les grands tableaux (Trac # 1803)

Créé le 20 oct. 2012  ·  8Commentaires  ·  Source: numpy/numpy

_Billet original http://projects.scipy.org/numpy/ticket/1803 le 19/04/2011 par l'utilisateur trac meawoppl, attribué à unknown._

a = zéros ((300000, 1000))
f = open ("test.pkl", "w")

cPickle.dump (a, f)

SystemError Traceback (dernier appel en dernier)

/ home / kddcup / code / matt / svd-projection / take5 /dans()

SystemError: retour d'erreur sans jeu d'exceptions

Ou en utilisant la fonction .dump:

a.dump ("test.pkl")

SystemError Traceback (dernier appel en dernier)

/ home / kddcup / code / matt / svd-projection / take5 /dans()

SystemError: résultat NULL sans erreur dans PyObject_Call

Je ne sais pas s'il s'agit d'un problème numpy ou Pickle / cPickle. Dans les deux cas, un message d'erreur plus instructif serait certainement utile. Je pense que le problème ne se produit que pour les tableaux de plus de 2 ** (32-1) octets, mais je devrais expérimenter plus pour être sûr.

00 - Bug Other

Tous les 8 commentaires

Je suis également confronté à ce problème.

@zhlsk n'a pas essayé plus loin ou n'a pas étudié s'il y avait un correctif en python, mais je pense que ce n'est pas un problème numpy mais python, car: cPickle.dump(a.tostring(), f) échoue également pour moi et c'est juste un gros string alors et n'a rien à voir avec numpy. Cependant, l'utilisation des fonctions de sauvegarde numpy ne devrait pas poser ce genre de problèmes.

@seberg Merci pour votre réponse. Vous avez raison. C'est un problème python: http://bugs.python.org/issue11564

En principe, nous pourrions probablement contourner le bogue de toute façon en passant large
tableaux au sélecteur sous la forme d’une série d’objets, chacun d’entre eux
limites, et reconstruisez le tableau au moment du décapage. Cela ressemble au
la limite est sur la taille d'un tableau d'octets.
Le 14 décembre 2012 à 22h11, "zhlsk" [email protected] a écrit:

@seberg https://github.com/seberg Merci pour votre réponse. Vous avez raison.
C'est un problème python: http://bugs.python.org/issue11564

-
Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps: //github.com/numpy/numpy/issues/2396#issuecomment -11394338.

Des progrès à ce sujet? Il semble que numpy.save et numpy.savetxt sont tous deux affectés par ce problème. Des solutions de contournement?

C'est un bogue en Python, le correctif consiste à passer à une version plus récente (il est corrigé dans Python 3.3), et la solution de contournement consiste à décaper votre tableau vous-même en plus petites parties, ou à utiliser un autre format de fichier que les pickles Python.

np.savetxt n'est pas affecté par cela, et np.save n'est affecté que pour les tableaux d'objets.

Fermeture.

J'obtiens cela en essayant de cPickle une matrice 11.314 x 8.463.980.778 avec 352 451 719 éléments stockés au format scipy.sparse.csr_matrix. Version Python: Python 2.7.10 | Anaconda 2.3.0 (x86_64) | (par défaut, 28 mai 2015, 17:04:42)

Cette page vous a été utile?
0 / 5 - 0 notes