Numpy: ndarrayダンプ関数(およびストレートcPickle)が大きな配列で失敗する(Trac#18​​03)

作成日 2012年10月20日  ·  8コメント  ·  ソース: numpy/numpy

_unknownに割り当てられたtracユーザーmeawopplによる2011-04-19の元のチケットhttp://projects.scipy.org/numpy/ticket/1803。_

a = zeros((300000、1000))
f = open( "test.pkl"、 "w")

cPickle.dump(a、f)

SystemErrorトレースバック(最後の最後の呼び出し)

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

SystemError:例外セットなしでエラーが返される

または、.dump関数を使用します。

a.dump( "test.pkl")

SystemErrorトレースバック(最後の最後の呼び出し)

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

SystemError:PyObject_CallでエラーのないNULL結果

これがnumpyなのかPickle / cPickleグリッチなのかわかりません。 どちらの場合でも、より有益なエラーメッセージが確かに役立ちます。 この問題は2 **(32-1)バイトより大きい配列でのみ発生すると思いますが、確実にするためにさらに実験する必要があります。

00 - Bug Other

全てのコメント8件

私もこの問題に直面しています。

@zhlskはさらに試行するかを調べ、Pythonでの修正がある場合、私はので、これは、numpyのが、Pythonの問題ではないとは思いませんでした: cPickle.dump(a.tostring(), f)また、単に大ちょうど同じとthatsの私のために失敗しました文字列は、numpyとは何の関係もありません。 ただし、numpy save関数を使用しても、このような問題は発生しないはずです。

@sebergご返信ありがとうございます。 あなたが正しい。 これはPythonの問題です: http

原則として、大規模なパスを実行することで、とにかくバグを回避できる可能性があります
一連のオブジェクトとしてピクラーに配列し、それぞれが
制限し、ピックル解除時にアレイを再構築します。 それはのように聞こえます
制限は、1バイト配列のサイズです。
2012年12月14日22:11、「zhlsk」 [email protected]は次のように書いています。

@seberghttps ://github.com/seberg返信ありがとうございます。 あなたが正しい。
これはPythonの問題です: http


このメールに直接返信するか、Gi tHubhttps://github.com/numpy/numpy/issues/2396#issuecomment-11394338で表示してください。

これについて何か進展はありますか? numpy.savenumpy.savetxt両方がこの問題の影響を受けているようです。 回避策はありますか?

これはPythonのバグであり、修正は新しいバージョンにアップグレードすることです(Python 3.3で修正されています)。回避策は、配列を小さな部分にピクルスするか、Pythonピクルス以外のファイル形式を使用することです。

np.savetxtはこれによる影響を受けず、np.saveはオブジェクト配列に対してのみ影響を受けます。

閉鎖。

これは、scipy.sparse.csr_matrix形式で352,451,719個の要素が格納された11,314 x8,463,980,778個のスパース行列をcPickleしようとしたときに発生します。 Pythonバージョン:Python 2.7.10 | Anaconda 2.3.0(x86_64)| (デフォルト、2015年5月28日、17:04:42)

このページは役に立ちましたか?
0 / 5 - 0 評価