NumPy: التاريخ والوقت
آخر تحديث: 2026-08-26
1. ما ستتعلمه
- ❶ إنشاء مصفوفات datetime64
- ❷ العمليات الحسابية على التواريخ والفترات الزمنية
- ❸ دوال أيام العمل
- ❹ استخراج مكونات التاريخ (السنة، الشهر، اليوم)
2. المفاهيم الأساسية
PYTHON
import numpy as np
# إنشاء مصفوفات التواريخ
dates = np.array(['2024-01-01', '2024-02-01', '2024-03-01'], dtype='datetime64')
print(dates) # ['2024-01-01' '2024-02-01' '2024-03-01']
---
## 3. العمليات الحسابية على التواريخ
print(dates + np.arange(3)) # إضافة أيام
---
## 4. نطاق تواريخ
range_dates = np.arange('2024-01-01', '2024-01-10', dtype='datetime64')
print(range_dates)
---
## 5. استخراج المكونات
print(dates.astype('datetime64[Y]')) # السنة
print(dates.astype('datetime64[M]')) # الشهر
TEXT
📖 للعرض فقط
> **المخرجات:** قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبتًا مسبقًا — قم بتثبيته محليًا (`pip install numpy`) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية.
▶ مثال: إنشاء نطاقات التواريخ (الصعوبة ⭐)
PYTHON
import numpy as np
---
## 6. نطاق يومي
days = np.arange('2024-01-01', '2024-01-11', dtype='datetime64')
print("Daily:", days)
---
## 7. نطاق شهري
months = np.arange('2024-01', '2024-07', dtype='datetime64[M]')
print("Monthly:", months)
---
## 8. نطاق ساعي
hours = np.arange('2024-01-01', '2024-01-02', dtype='datetime64[h]')
print("Hourly:", hours)
المخرجات:
TEXT
📖 للعرض فقط
Daily:
Monthly:
Hourly:
المخرجات:
TEXT 📖 للعرض فقطDaily: ['2024-01-01' '2024-01-02' '2024-01-03' '2024-01-04' '2024-01-05' '2024-01-06' '2024-01-07' '2024-01-08' '2024-01-09' '2024-01-10'] Monthly: ['2024-01' '2024-02' '2024-03' '2024-04' '2024-05' '2024-06'] Hourly: ['2024-01-01T00' '2024-01-01T01' '2024-01-01T02' '2024-01-01T03' '2024-01-01T04' '2024-01-01T05' '2024-01-01T06' '2024-01-01T07' '2024-01-01T08' '2024-01-01T09' '2024-01-01T10' '2024-01-01T11' '2024-01-01T12' '2024-01-01T13' '2024-01-01T14' '2024-01-01T15' '2024-01-01T16' '2024-01-01T17' '2024-01-01T18' '2024-01-01T19' '2024-01-01T20' '2024-01-01T21' '2024-01-01T22' '2024-01-01T23']
▶ مثال: العمليات الحسابية على التواريخ (الصعوبة ⭐⭐)
PYTHON
import numpy as np
start = np.array('2024-01-15', dtype='datetime64')
---
## 9. إضافة أيام
print("Start:", start)
print("+7 days:", start + 7)
print("+30 days:", start + 30)
print("-5 days:", start - 5)
---
## 10. الفرق بين التواريخ
d1 = np.array('2024-01-01', dtype='datetime64')
d2 = np.array('2024-12-31', dtype='datetime64')
delta = d2 - d1
print("Days in 2024:", delta)
---
## 11. استخراج المكونات
date = np.array('2024-07-04', dtype='datetime64')
print("Year:", date.astype('datetime64[Y]'))
print("Month:", date.astype('datetime64[M]'))
المخرجات:
TEXT
📖 للعرض فقط
Start:
+7 days:
+30 days:
-5 days:
Days in 2024:
المخرجات:
TEXT 📖 للعرض فقطStart: 2024-01-15 +7 days: 2024-01-22 +30 days: 2024-02-14 -5 days: 2024-01-10 Days in 2024: 365 days Year: 2024 Month: 2024-07
▶ مثال: حسابات أيام العمل (الصعوبة ⭐⭐)
PYTHON
import numpy as np
start = np.datetime64('2024-01-01')
end = np.datetime64('2024-01-31')
---
## 12. عد أيام العمل
bd = np.busday_count(start, end)
print(f"Business days Jan 2024: {bd}")
---
## 13. إيجاد يوم العمل التالي
print("Next business day after 2024-01-05:", np.busday_offset('2024-01-05', 0, roll='forward'))
---
## 14. نطاق أيام العمل
biz_days = np.busday_offset('2024-01-01', np.arange(10))
print("First 10 business days of 2024:", biz_days)
المخرجات:
TEXT
📖 للعرض فقط
Next business day after 2024-01-05:
First 10 business days of 2024:
المخرجات:
TEXT 📖 للعرض فقطBusiness days Jan 2024: 22 Next business day after 2024-01-05: 2024-01-08 First 10 business days of 2024: ['2024-01-01' '2024-01-02' '2024-01-03' '2024-01-04' '2024-01-05' '2024-01-08' '2024-01-09' '2024-01-10' '2024-01-11' '2024-01-12']
س ما الفرق بين datetime64 و datetime في Python؟
ج datetime64 هو عدد صحيح ثابت العرض 64 بت يمثل الوقت، مما يجعله سريعًا وفعالًا في استخدام الذاكرة. datetime في Python هو كائن كامل بمرونة أكبر لكن بتكلفة أعلى.
س ما هي دقة datetime64؟
ج تعتمد على الوحدة —
datetime64[Y] (سنة)، datetime64[M] (شهر)، datetime64[D] (يوم)، datetime64[h] (ساعة)، datetime64[ms] (ميلي ثانية)، datetime64[ns] (نانو ثانية).س كيف أحسب أيام العمل؟
ج استخدم
np.busday_count(start, end) لعد أيام العمل بين تاريخين، وnp.busday_offset لإيجاد أقرب يوم عمل.❓ أسئلة شائعة
س ما هو أهم شيء يجب تذكره؟
ج عمليات NumPy متجهة — تجنب حلقات Python لأداء أفضل.
س أين يمكنني معرفة المزيد؟
ج اطّلع على وثائق NumPy الرسمية على numpy.org للمراجع التفصيلية والمواضيع المتقدمة.
س هل يعمل هذا مع NumPy 2.x؟
ج نعم — جميع الأمثلة متوافقة مع NumPy 2.x. بعض الواجهات القديمة (مثل np.random.seed) لا تزال مدعومة لكن البدائل الحديثة موصى بها.
📖 ملخص
- مصفوفات datetime64 تخزن التواريخ/الأوقات كأعداد صحيحة 64 بت — سريعة ومضغوطة
np.arangeمع dtype datetime64 تنشئ نطاقات تواريخ- العمليات الحسابية: جمع/طرح الأعداد الصحيحة للتحريك بوحدة التاريخ
astypeتستخرج المكونات: السنة، الشهر، اليوم، إلخ.- دوال أيام العمل:
busday_count،busday_offset
📝 تمارين
-
مبتدئ (الصعوبة ⭐): أنشئ مصفوفة بجميع تواريخ يناير 2024. اطبع أول 5 وآخر 5 تواريخ.
-
متوسط (الصعوبة ⭐⭐): أنشئ نطاق تواريخ من 2024-01-01 إلى 2024-12-31. استخرج الشهر من كل تاريخ واحسب عدد التواريخ في كل شهر.
-
متقدم (الصعوبة ⭐⭐⭐): احسب عدد أيام العمل بين 2024-01-01 و 2024-12-31. قارن مع العدد الإجمالي للأيام التقويمية.