NumPy: الدوال الرياضية
آخر تحديث: 2026-08-26
1. ما ستتعلمه
- ❶ الدوال المثلثية: sin، cos، tan، arcsin، arccos، arctan2
- ❷ الدوال الأسية واللوغاريتمية: exp، log، log2، log10
- ❸ التقريب: floor، ceil، round، trunc، rint
- ❹ الدوال الخاصة: sqrt، square، sign، abs، clip
2. المفاهيم الأساسية
PYTHON
import numpy as np
# الدوال المثلثية
angles = np.array([0, np.pi/4, np.pi/2])
print(np.sin(angles)) # [0. 0.707 1.]
print(np.cos(angles)) # [1. 0.707 0.]
print(np.tan(angles)) # [0. 1. inf]
---
## 3. arctan2: حساب الزاوية الآمن
print(np.arctan2(1, 1)) # 0.785 (pi/4)
---
## 4. الدوال الأسية واللوغاريتمية
print(np.exp([0, 1, 2])) # [1. 2.718 7.389]
print(np.log([1, 10, 100])) # [0. 2.303 4.605]
print(np.log10([1, 10, 100])) # [0. 1. 2.]
---
## 5. التقريب
a = np.array([1.2, 1.7, -1.2, -1.7])
print(np.floor(a)) # [1. 1. -2. -2.]
print(np.ceil(a)) # [2. 2. -1. -1.]
print(np.round(a)) # [1. 2. -1. -2.]
print(np.trunc(a)) # [1. 1. -1. -1.]
---
## 6. القص (Clipping)
data = np.array([1, 5, 10, 15, 20])
print(np.clip(data, 5, 15)) # [5 5 10 15 15]
TEXT
📖 للعرض فقط
> **المخرجات:** قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبتًا مسبقًا — قم بتثبيته محليًا (`pip install numpy`) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية.
▶ مثال: الدوال المثلثية (الصعوبة ⭐)
PYTHON
import numpy as np
angles = np.array([0, np.pi/6, np.pi/4, np.pi/3, np.pi/2])
print("Angles:", angles)
print("sin:", np.sin(angles).round(4))
print("cos:", np.cos(angles).round(4))
print("tan:", np.tan(angles).round(4))
---
## 7. الدوال المثلثية العكسية
print("arcsin(0.5):", np.arcsin(0.5))
print("arccos(0.5):", np.arccos(0.5))
المخرجات:
TEXT
📖 للعرض فقط
Angles:
sin:
cos:
tan:
arcsin(0.5):
المخرجات:
TEXT 📖 للعرض فقطAngles: [0. 0.52359878 0.78539816 1.04719755 1.57079633] sin: [0. 0.5 0.7071 0.866 1. ] cos: [1. 0.866 0.7071 0.5 0. ] tan: [0. 0.5774 1. 1.7321 inf] arcsin(0.5): 0.5235987755982989 arccos(0.5): 1.0471975511965979
▶ مثال: الدوال الأسية واللوغاريتمية (الصعوبة ⭐⭐)
PYTHON
import numpy as np
x = np.array([1, 2, 3, 4, 5])
print("exp:", np.exp(x).round(2))
print("log:", np.log(x).round(2))
print("log2:", np.log2(x).round(2))
print("log10:", np.log10(x).round(2))
---
## 8. التحقق: exp(log(x)) ≈ x
restored = np.exp(np.log(x))
print("exp(log(x)):", restored.round(6))
print("Match:", np.allclose(x, restored))
المخرجات:
TEXT
📖 للعرض فقط
exp:
log:
log2:
log10:
exp(log(x)):
المخرجات:
TEXT 📖 للعرض فقطexp: [ 2.72 7.39 20.09 54.6 148.41] log: [0. 0.69 1.1 1.39 1.61] log2: [0. 1. 1.58 2. 2.32] log10: [0. 0.3 0.48 0.6 0.7 ] exp(log(x)): [1. 2. 3. 4. 5.] Match: True
▶ مثال: التقريب والقص (الصعوبة ⭐)
PYTHON
import numpy as np
a = np.array([1.2, 1.7, -1.2, -1.7, 2.5, -2.5])
print("floor:", np.floor(a))
print("ceil:", np.ceil(a))
print("trunc:", np.trunc(a))
print("round:", np.round(a))
---
## 9. القص (Clipping)
data = np.array([-10, 5, 15, 20, 100, -5])
clipped = np.clip(data, 0, 50)
print("Original:", data)
print("Clipped [0, 50]:", clipped)
المخرجات:
TEXT
📖 للعرض فقط
floor:
ceil:
trunc:
round:
Original:
المخرجات:
TEXT 📖 للعرض فقطfloor: [ 1. 1. -2. -2. 2. -3.] ceil: [ 2. 2. -1. -1. 3. -2.] trunc: [ 1. 1. -1. -1. 2. -2.] round: [ 1. 2. -1. -2. 2. -2.] Original: [-10 5 15 20 100 -5] Clipped [0, 50]: [ 0 5 15 20 50 0]
س هل دوال NumPy الرياضية أسرع من وحدة math في Python؟
ج نعم — للمصفوفات، NumPy متجهة (على مستوى C). للقيم المفردة، وحدة math في Python أسرع قليلاً. استخدم NumPy للمصفوفات، وmath في Python للقيم العددية.
س ما الفرق بين np.round و np.around؟
ج هما متطابقان —
np.around هو اسم مستعار لـ np.round. كلاهما يقرب إلى أقرب عدد صحيح (أو عدد محدد من المنازل العشرية).س لماذا يُستخدم np.clip؟
ج القص (clipping) يحدد القيم ضمن نطاق — مفيد لإزالة القيم الشاذة، أو ضبط قيم البكسل، أو ضمان الاستقرار العددي.
❓ أسئلة شائعة
س ما هو أهم شيء يجب تذكره؟
ج عمليات NumPy متجهة — تجنب حلقات Python لأداء أفضل.
س أين يمكنني معرفة المزيد؟
ج اطّلع على وثائق NumPy الرسمية على numpy.org للمراجع التفصيلية والمواضيع المتقدمة.
س هل يعمل هذا مع NumPy 2.x؟
ج نعم — جميع الأمثلة متوافقة مع NumPy 2.x. بعض الواجهات القديمة (مثل np.random.seed) لا تزال مدعومة لكن البدائل الحديثة موصى بها.
📖 ملخص
- الدوال المثلثية: sin، cos، tan، arcsin، arccos، arctan، arctan2
- الدوال الأسية/اللوغاريتمية: exp، log، log2، log10، expm1، log1p
- التقريب: floor، ceil، round، trunc، rint
- القص:
np.clip(data, min, max)— يحدد القيم لنطاق - جميع الدوال متجهة ومتوافقة مع NumPy
📝 تمارين
-
مبتدئ (الصعوبة ⭐): أنشئ مصفوفة زوايا من 0 إلى 2π بفواصل π/4. احسب sin وcos وtan لكل منها.
-
متوسط (الصعوبة ⭐⭐): أنشئ مصفوفة من 100 قيمة بين 0.1 و 10. احسب log10 وln وexp لكل منها. تحقق من أن exp(log(x)) ≈ x.
-
متقدم (الصعوبة ⭐⭐⭐): استخدم
np.clipلإزالة القيم الشاذة من مجموعة بيانات — استبدل القيم الأقل من المئين الخامس بقيمة المئين الخامس، والقيم الأعلى من المئين الخامس والتسعين بقيمة المئين الخامس والتسعين.