اذهب إلى المحتوى

السؤال

نشر

مكتبة numpy مفيدة للغاية في التعامل مع المصفوفات والأرقام، يمكنها التعامل مع مصفوفات كبيرة للغاية قد تصل إلى 1000 × 1000 بدون ادنى مشكلة، لكن يبدو أني أواجهة مشكلة عند التعامل مصفوفات أكبر من هذا (5000 × 5000 على سبيل المثال) بالتأكيد بسبب حجم الذاكرة العشوائية الصغير لدي، هل توجد طريقة أفضل لإنشاء مصفوفات غاية في الضخامة (مليون صف × مليون عمود على سبيل المثال)، دون الحاجة إلى مساحة ذاكرة عشوائية ضخمة؟

Recommended Posts

  • 1
نشر

يمكنك استخدام Pytables و Numpy حيث سيقوم Pytables بتخزين البيانات على القرص بتنسيق HDF ، مع ضغط اختياري ، وهو أمر مفيد عند التعامل مع عشرات أو مئات الملايين من الصفوف, إنها أيضا سريعة جدا, يمكن لجهاز كمبيوتر قديم معالجة البيانات من خلال تجميع مجموعة شبيهة بـ SQL في 1000000 صف / ثانية, وهذا ليس سيئا بالنسبة لحل قائم على بايثون,للوصول إلى البيانات في صورة NumPy :

data = table[from_row:to_row]

 

  • 0
نشر

كما وضح محمد في التعليق السابق فإنه يمكنك تخزين الملف على صيغة  HDF سواء باستخدام ال h5py  أو ال pytables

من خلال  h5py  يمكنك حفظ البيانات في ملف كالتالي

import numpy as np
import h5py

data_to_write = np.random.random(size=(100,20)) # إنشاء مصفوفة


#إنشاء ملف
with h5py.File('name-of-file.h5', 'w') as hf:
    hf.create_dataset("name-of-dataset",  data=data_to_write)
    
#قراءة ملف
with h5py.File('name-of-file.h5', 'r') as hf:
    data = hf['name-of-dataset'][:]

أو من خلال numpy يمكنك استخدام savez_compressed لحفظ البيانات الضخمة  في ملف مضغوط وهو يكون على صيغة npz 

من خلال الدالة

numpy.savez_compressed(file, *args, **kwds)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...