Numpy: تفشل وظيفة تفريغ ndarray (و cPickle المستقيم) للمصفوفات الكبيرة (Trac # 1803)

تم إنشاؤها على ٢٠ أكتوبر ٢٠١٢  ·  8تعليقات  ·  مصدر: numpy/numpy

_Original Ticket http://projects.scipy.org/numpy/ticket/1803 بتاريخ 2011-04-19 عن طريق تتبع المستخدم meawoppl ، المخصصة لمجهول.

أ = أصفار ((300000 ، 1000))
f = open ("test.pkl"، "w")

cPickle.dump (أ ، و)

SystemError Traceback (آخر مكالمة أخيرة)

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

SystemError: خطأ إرجاع بدون تعيين استثناء

أو باستخدام وظيفة تفريغ:

a.dump ("test.pkl")

SystemError Traceback (آخر مكالمة أخيرة)

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

SystemError: نتيجة NULL بدون خطأ في PyObject_Call

لست متأكدًا مما إذا كان هذا خللًا بسيطًا أو مخللًا / مخللًا. في كلتا الحالتين ، ستساعد بالتأكيد رسالة خطأ أكثر إفادة. أعتقد أن المشكلة تحدث فقط للمصفوفات الأكبر من 2 ** (32-1) بايت ولكن عليّ تجربة المزيد للتأكد.

00 - Bug Other

ال 8 كومينتر

أنا أيضا أواجه هذه المشكلة.

zhlsk لم يحاول أبعد من ذلك أو حقق في ما إذا كان هناك إصلاح في Python ، لكنني أعتقد أن هذه ليست مشكلة صغيرة ولكنها مشكلة بيثون ، نظرًا لأن: cPickle.dump(a.tostring(), f) فشل أيضًا بالنسبة لي تمامًا وهذا مجرد خطأ السلسلة إذن وليس لها علاقة بـ numpy. ومع ذلك ، فإن استخدام وظائف الحفظ غير المفكك يجب ألا يكون به هذا النوع من المشاكل.

من حيث المبدأ ، يمكننا على الأرجح التغلب على الخطأ على أي حال عن طريق تمرير الحجم الكبير
المصفوفات إلى pickler كسلسلة من الكائنات ، كل منها يتناسب مع
الحدود ، وإعادة بناء المصفوفة في وقت غير مألوف. يبدو مثل ملف
الحد على حجم صفيف بايت واحد.
في 14 ديسمبر 2012 22:11 ، كتب "zhlsk" [email protected] :

seberg https://github.com/seberg شكرا لردكم . أنت على حق.
إنها مشكلة بيثون: http://bugs.python.org/issue11564

-
يمكنك الرد على هذه الرسالة الإلكترونية مباشرةً أو عرضها على Gi tHubhttps: //github.com/numpy/numpy/issues/2396#issuecomment -11394338.

أي تقدم في هذا؟ يبدو أن numpy.save و numpy.savetxt كلاهما متأثر بهذه المشكلة. أي حلول؟

إنه خطأ في Python ، الإصلاح هو الترقية إلى إصدار أحدث (تم إصلاحه في Python 3.3) ، والحل البديل هو انتقاء المصفوفة بنفسك في أجزاء أصغر ، أو استخدام تنسيق ملف آخر غير مخللات Python.

لا يتأثر np.savetxt بهذا ، ولا يتأثر np.save إلا بمصفوفات الكائنات.

إغلاق.

أحصل على هذا عند محاولة cPickle 11،314 x 8،463،980،778 مصفوفة متفرقة مع 352،451،719 عنصرًا مخزّنًا بتنسيق scipy.sparse.csr_matrix. إصدار Python: Python 2.7.10 | Anaconda 2.3.0 (x86_64) | (افتراضي ، 28 مايو 2015 ، 17:04:42)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات