Numpy: fungsi ndarray dump (dan straight cPickle) gagal untuk array besar (Trac # 1803)

Dibuat pada 20 Okt 2012  ·  8Komentar  ·  Sumber: numpy/numpy

_Tiket asli http://projects.scipy.org/numpy/ticket/1803 pada 2011-04-19 oleh pengguna trac meawoppl, ditetapkan ke tidak diketahui._

a = nol ((300000, 1000))
f = buka ("test.pkl", "w")

cPickle.dump (a, f)

SystemError Traceback (panggilan terakhir terakhir)

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

SystemError: kesalahan kembali tanpa set pengecualian

Atau menggunakan fungsi .dump:

a.dump ("test.pkl")

SystemError Traceback (panggilan terakhir terakhir)

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

SystemError: Hasil NULL tanpa kesalahan di PyObject_Call

Saya tidak yakin apakah ini kesalahan numpy atau Pickle / cPickle. Dalam kedua kasus tersebut, pesan kesalahan yang lebih instruktif pasti akan membantu. Saya pikir masalahnya hanya terjadi untuk array yang lebih besar dari 2 ** (32-1) byte tetapi saya harus bereksperimen lebih banyak untuk memastikan.

00 - Bug Other

Semua 8 komentar

Saya juga menghadapi masalah ini.

@zhlsk tidak mencoba lebih jauh atau menyelidiki apakah ada perbaikan pada python, tetapi saya pikir ini bukan masalah numpy tetapi masalah python, karena: cPickle.dump(a.tostring(), f) juga gagal untuk saya sama saja dan itu hanya besar string kemudian dan tidak ada hubungannya dengan numpy. Menggunakan fungsi penyimpanan numpy seharusnya tidak memiliki masalah seperti ini.

@seberg Terima kasih atas balasan Anda. Kamu benar. Ini masalah python: http://bugs.python.org/issue11564

Pada prinsipnya kita mungkin bisa mengatasi bug dengan melewatkan besar
array ke pickler sebagai rangkaian objek, yang masing-masing pas di file
membatasi, dan merekonstruksi larik pada waktu tak terikat. Kedengarannya seperti itu
limit adalah seukuran array byte tunggal.
Pada 14 Des 2012 22:11, "zhlsk" [email protected] menulis:

@seberg https://github.com/seberg Terima kasih atas balasan Anda. Kamu benar.
Ini masalah python: http://bugs.python.org/issue11564

-
Balas email ini secara langsung atau lihat di Gi tHubhttps: //github.com/numpy/numpy/issues/2396#issuecomment -11394338.

Ada kemajuan dalam hal ini? Tampaknya numpy.save dan numpy.savetxt keduanya terpengaruh oleh masalah ini. Ada solusi?

Ini adalah bug di Python, perbaikannya adalah meningkatkan ke versi yang lebih baru (diperbaiki dengan Python 3.3), dan solusinya adalah dengan membuat acar array Anda sendiri di bagian yang lebih kecil, atau menggunakan beberapa format file lain selain acar Python.

np.savetxt tidak terpengaruh oleh ini, dan np.save hanya terpengaruh untuk larik objek.

Penutupan.

Saya mendapatkan ini saat mencoba cPickle matriks renggang 11.314 x 8.463.980.778 dengan 352.451.719 elemen tersimpan dalam format scipy.sparse.csr_matrix. Versi Python: Python 2.7.10 | Anaconda 2.3.0 (x86_64) | (default, 28 Mei 2015, 17:04:42)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat