English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

IO في NumPy

يعمل NumPy على إدخال تنسيق ملف بسيط لـ ndarray npy.

ملفات npy تستخدم لتحفظ البيانات اللازمة لإنشاء ndarray،الرسوم،dtype وما إلى ذلك

والعديد من الدوال IO المستخدمة هي:

وال�数ونيumpy.load() و numpy.save() هما الوسائل الرئيسية لقراءة وكتابة بيانات المصفوفات في الملفات،بافتراض الافتراضي،سيتم حفظ المصفوفات بتنسيق غير مضغوط من صيغة ثنائية،وتم حفظها في ملف بتوسعة .npy �数ونيumpy.savez() يستخدم لتحفظ عدة مصفوفات في ملف،بافتراض الافتراضي،سيتم حفظ المصفوفات بتنسيق غير مضغوط من صيغة ثنائية،وتم حفظها في ملف بتوسعة .npz وال�数ونيumpy.loadtxt() و numpy.savetxt() تتعامل مع ملفات النصوص العادية (.txt وما إلى ذلك)

numpy.save()

�数ونيumpy.save() سيحفظ المصفوفة إلى ملف بتوسعة .npy
numpy.save(file, arr, allow_pickle=True, fix_imports=True)

شرح المعلمات:

fileالملف الذي سيتم حفظه،بتوسعة .npy،إذا لم يكن هناك امتداد ملف .npy في نهاية مسار الملف،سيتم إضافة الامتداد تلقائيًا arr: المصفوفة التي سيتم حفظها allow_pickle: اختياري،قيمة بولية،تسمح باستخدام pickles لتحفظ مصفوفات الأجسام،pickle في Python يستخدم لتحويل الأجسام إلى سلسلة لتحفظها على القرص الصلب أو لاستعادتها من ملفات القرص الصلب fix_imports: اختياري،لراحه استخدام البيانات المحفوظة من Python2 في Python3
 import numpy as np 
  
 a = np.array([1,2,3,4,5]) 
  
 # حفظ إلى ملف test.npy
 np.save('test.npy',a) 
  
 # حفظ إلى ملف test1.npy،إذا لم يكن هناك امتداد ملف .npy في نهاية مسار الملف،سيتم إضافة الامتداد تلقائيًا
 np.save('test1.npy',a)

يمكننا النظر في محتويات الملف:

 $ cat test.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,),} 
 $ cat test1.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,),}

يمكن ملاحظة أن الملف يحتوي على أكواد غير واضحة، لأنها هي بيانات مخصصة لنظام NumPy الثنائي.

يمكننا استخدام وظيفة load() لقراءة البيانات وعرضها بشكل صحيح:

import numpy as np 
b = np.load('test.npy') 
print (b)

نتيجة الإخراج هي:

[1 2 3 4 5]

np.savez

وظيفة numpy.savez() تقوم بحفظ عدة مصفوفات في ملف يحتوي على امتداد npz.

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

شرح المعلمات:

file، الملف الذي يتم حفظه، امتداد الملف هو .npz، إذا لم يكن هناك امتداد ملف في نهاية مسار الملف .npz، سيتم إضافة هذا الاسم المضاف تلقائيًا. args: يمكن حفظ المصفوفات باستخدام كلمات المفتاحية، يمكن تسمية المصفوفات باستخدام كلمات المفتاحية، وسيتم تسمية المصفوفات التي يتم نقلها باستخدام معلمات غير الكلمات المفتاحية تلقائيًا باسم arr_0, arr_1, … . kwds: يتم حفظ المصفوفات باستخدام أسماء الكلمات المفتاحية.
 import numpy as np
 a = np.array([[1,2,3],[4,5,6]])
 b = np.arange(0, 1.0, 0.1)
 c = np.sin(b)
 # c استخدمت كلمات المفتاح sin_array
 np.savez("w3codebox.npz", a, b, sin_array = c)
 r = np.load("w3codebox.npz") 
 print(r.files) # عرض أسماء المصفوفات المختلفة
 print(r['arr_0']) # مصفوفة a
 print(r['arr_1']) # مصفوفة b
 print(r['sin_array']) # مصفوفة c

نتيجة الإخراج هي:

 ['sin_array', 'arr_0', 'arr_1']
 [[1 2 3]
  [4 5 6]
 [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
 [0. 0.09983342 0.19866933 0.29552021 0.38941834 0.47942554
  0.56464247 0.64421769 0.71735609 0.78332691

savetxt()

وظيفة savetxt() هي حفظ البيانات باستخدام نمط ملف النص البسيط، ووظيفة الاستدعاء المقابلة loadtxt() لاسترداد البيانات.

 np.loadtxt(FILENAME, dtype=int, delimiter=' ')
 np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

يمكن لتقديم متغير delimiter أن يشمل مختلفة الفواصل، الوظائف المبدلة، عدد الأعمدة التي يجب تجاوزها، إلخ.

 import numpy as np
 a = np.array([1,2,3,4,5]) 
 np.savetxt('out.txt',a) 
 b = np.loadtxt('out.txt') 
  
 print(b)

نتيجة الإخراج هي:

[1. 2. 3. 4. 5.]

استخدام متغير delimiter:

 import numpy as np
 a=np.arange(0,10,0.5).reshape(4,-1)
 np.savetxt("out.txt",a,fmt="%d",delimiter=",")  # قم بتغيير الحفظ كعدد صحيح، باستخدام الفاصلة كنقاط عرقلية
 b = np.loadtxt("out.txt",delimiter=",")  # يجب تحديد الفاصلة كنقاط عرقلية عند التحميل
 print(b)
   [[0. 0. 1. 1. 2.]]
  [2. 3. 3. 4. 4.]
  [5. 5. 6. 6. 7.]
  [7. 8. 8. 9. 9.]