NumPy: الإدخال/الإخراج للملفات
آخر تحديث: 2026-08-26
1. ما ستتعلمه
- ❶ حفظ وتحميل ملفات
.npy(مصفوفة واحدة) - ❷ حفظ وتحميل ملفات
.npz(مصفوفات متعددة) - ❸ الإدخال/الإخراج لملفات CSV/نصية باستخدام
loadtxtوsavetxt - ❹ المصفوفات المعينة في الذاكرة لمجموعات البيانات الكبيرة
2. المفاهيم الأساسية
(1) صيغة .npy
PYTHON
import numpy as np
a = np.array([1, 2, 3, 4, 5])
# حفظ
np.save('array.npy', a)
---
## 3. تحميل
b = np.load('array.npy')
print(b) # [1 2 3 4 5]
(2) صيغة .npz (مصفوفات متعددة)
PYTHON
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
---
## 4. حفظ مصفوفات متعددة
np.savez('data.npz', x=x, y=y)
---
## 5. تحميل
data = np.load('data.npz')
print(data['x']) # [1 2 3]
print(data['y']) # [4 5 6]
(3) ملفات CSV/نصية
PYTHON
---
## 6. حفظ إلى CSV
data = np.array([[1, 2, 3],
[4, 5, 6]])
np.savetxt('data.csv', data, delimiter=',', fmt='%.2f')
---
## 7. تحميل من CSV
loaded = np.loadtxt('data.csv', delimiter=',')
▶ مثال: حفظ وتحميل ملفات .npy (الصعوبة ⭐)
PYTHON
import numpy as np
import os
---
## 8. إنشاء وحفظ مصفوفة
a = np.array([1, 2, 3, 4, 5])
np.save('example.npy', a)
---
## 9. تحميلها مرة أخرى
b = np.load('example.npy')
print("Loaded:", b)
print("Same data:", np.array_equal(a, b))
---
## 10. تنظيف
os.remove('example.npy')
المخرجات:
TEXT
📖 للعرض فقط
Loaded:
Same data:
المخرجات:
TEXT 📖 للعرض فقطLoaded: [1 2 3 4 5] Same data: True
▶ مثال: الإدخال/الإخراج لملفات CSV (الصعوبة ⭐⭐)
PYTHON
import numpy as np
import os
data = np.array([[1.5, 2.3, 3.7],
[4.1, 5.6, 6.2],
[7.8, 8.4, 9.9]])
---
## 11. حفظ إلى CSV
np.savetxt('data.csv', data, delimiter=',', fmt='%.2f',
header='x,y,z', comments='')
---
## 12. تحميل من CSV
loaded = np.loadtxt('data.csv', delimiter=',')
print("Loaded CSV:
", loaded)
---
## 13. تحميل أعمدة محددة
col_0 = np.loadtxt('data.csv', delimiter=',', usecols=0)
print("First column:", col_0)
os.remove('data.csv')
المخرجات:
TEXT
📖 للعرض فقط
First column:
المخرجات:
TEXT 📖 للعرض فقطLoaded CSV: [[1.5 2.3 3.7] [4.1 5.6 6.2] [7.8 8.4 9.9]] First column: [1.5 4.1 7.8]
▶ مثال: العمل مع ملفات .npz (الصعوبة ⭐⭐)
PYTHON
import numpy as np
import os
x = np.linspace(0, 10, 100)
y = np.sin(x)
z = np.cos(x)
---
## 14. حفظ مصفوفات متعددة
np.savez('trig.npz', x=x, y=y, z=z)
---
## 15. تحميل والوصول بالاسم
data = np.load('trig.npz')
print("Keys:", list(data.keys()))
print("x[:5]:", data['x'][:5])
print("y[:5]:", data['y'][:5])
os.remove('trig.npz')
المخرجات:
TEXT
📖 للعرض فقط
Keys:
x[:5]:
y[:5]:
المخرجات:
TEXT 📖 للعرض فقطKeys: ['x', 'y', 'z'] x[:5]: [0. 0.1010101 0.2020202 0.3030303 0.4040404] y[:5]: [0. 0.10083842 0.20064886 0.2984138 0.3931366]
❓ أسئلة شائعة
س ما ميزة .npy على CSV؟
ج .npy يحافظ على نوع البيانات بدقة، أسرع في القراءة/الكتابة، ويأخذ مساحة أقل على القرص. CSV قابل للقراءة البشرية ومحمول لكنه أبطأ ويفقد معلومات نوع البيانات.
س ما هي المصفوفة المعينة في الذاكرة؟
ج
np.load('file.npy', mmap_mode='r') يحمّل الملف كمصفوفة معينة في الذاكرة — لا يُحمّل الملف بأكمله في الذاكرة دفعة واحدة. مفيد لمجموعات البيانات الأكبر من RAM.س كيف أتعامل مع القيم المفقودة في CSV؟
ج استخدم
np.genfromtxt مع معامل filling_values لتحديد قيمة افتراضية للإدخالات المفقودة.📖 ملخص
np.save/np.load: مصفوفة واحدة بصيغة .npy (سريع، مضغوط، يحافظ على النوع)np.savez/np.load: مصفوفات متعددة بصيغة .npz (قاموس مضغوط)np.savetxt/np.loadtxt: الإدخال/الإخراج لملفات CSV/نصيةnp.genfromtxt: يتعامل مع القيم المفقودة والأنواع المختلطة- المصفوفات المعينة في الذاكرة:
mmap_mode='r'لمجموعات البيانات الكبيرة
📝 تمارين
-
مبتدئ (الصعوبة ⭐): أنشئ مصفوفة، احفظها بصيغتي .npy و .csv، حمّل كليهما، وقارن القيم المحملة.
-
متوسط (الصعوبة ⭐⭐): أنشئ 3 مصفوفات، احفظها في ملف .npz واحد، حمّلها مرة أخرى، وتحقق من استعادة كل مصفوفة بشكل صحيح.
-
متقدم (الصعوبة ⭐⭐⭐): أنشئ مصفوفة كبيرة (1000x1000)، احفظها بصيغة .npy، وحمّلها باستخدام
mmap_mode='r'. اطلع على عنصر واحد واشرح لماذا هذا أكثر كفاءة في الذاكرة لمجموعات البيانات الكبيرة.