Numpy: A função de despejo ndarray (e cPickle direto) falha para grandes arrays (Trac # 1803)

Criado em 20 out. 2012  ·  8Comentários  ·  Fonte: numpy/numpy

_Tíquete original http://projects.scipy.org/numpy/ticket/1803 em 2011-04-19 pelo usuário trac meawoppl, atribuído a desconhecido._

a = zeros ((300000, 1000))
f = aberto ("test.pkl", "w")

cPickle.dump (a, f)

SystemError Traceback (última chamada mais recente)

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

SystemError: retorno de erro sem conjunto de exceção

Ou usando a função .dump:

a.dump ("test.pkl")

SystemError Traceback (última chamada mais recente)

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

SystemError: resultado NULL sem erro em PyObject_Call

Não tenho certeza se esta é uma falha numpy ou Pickle / cPickle. Em qualquer dos casos, uma mensagem de erro mais instrutiva certamente ajudaria. Acho que o problema só acontece com matrizes maiores que 2 ** (32-1) bytes, mas eu teria que experimentar mais para ter certeza.

00 - Bug Other

Todos 8 comentários

Eu também estou enfrentando esse problema.

@zhlsk não tentou mais ou investigou se há uma correção no python, mas acho que isso não é um problema, mas sim um python, pois: cPickle.dump(a.tostring(), f) também falha para mim da mesma forma e isso é apenas um grande string então e não tem nada a ver com numpy. Usar as funções do numpy save não deve ter esse tipo de problema.

@seberg Obrigado pela sua resposta. Você está certo. É um problema de python: http://bugs.python.org/issue11564

Em princípio, provavelmente poderíamos contornar o bug de qualquer maneira passando grandes
matrizes para o selecionador como uma série de objetos, cada um deles se encaixando no
limites e reconstruir a matriz no tempo de remoção. Soa como o
o limite está no tamanho de uma única matriz de bytes.
Em 14 de dezembro de 2012, às 22h11, "zhlsk" [email protected] escreveu:

@seberg https://github.com/seberg Obrigado pela sua resposta. Você está certo.
É um problema de python: http://bugs.python.org/issue11564

-
Responda a este e-mail diretamente ou visualize-o em Gi tHubhttps: //github.com/numpy/numpy/issues/2396#issuecomment -11394338.

Algum progresso nisso? Parece que numpy.save e numpy.savetxt são afetados por este problema. Alguma solução alternativa?

É um bug no Python, a correção é atualizar para uma versão mais recente (corrigida no Python 3.3) e a solução alternativa é separar seu array em partes menores ou usar algum outro formato de arquivo que não seja o pickles do Python.

np.savetxt não é afetado por isso, e np.save é afetado apenas para matrizes de objetos.

Fechando.

Estou recebendo isso ao tentar cPickle uma matriz esparsa 11.314 x 8.463.980.778 com 352.451.719 elementos armazenados no formato scipy.sparse.csr_matrix. Versão do Python: Python 2.7.10 | Anaconda 2.3.0 (x86_64) | (padrão, 28 de maio de 2015, 17:04:42)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Levstyle picture Levstyle  ·  3Comentários

Foadsf picture Foadsf  ·  3Comentários

kevinzhai80 picture kevinzhai80  ·  4Comentários

astrofrog picture astrofrog  ·  4Comentários

navytux picture navytux  ·  4Comentários