NumPy: عمليات التجميع

آخر تحديث: 2026-08-26

1. ما ستتعلمه




2. قصة

تحتاج أليس إلى حساب المتوسط والحد الأقصى والانحراف المعياري لـ 10 ملايين قراءة استشعار. في Python، كانت ستكتب ثلاث حلقات — 15 ثانية. في NumPy: data.mean() و data.max() و data.std() — 0.05 ثانية إجمالاً. "التجميع في NumPy ليس أسرع فحسب — إنه نموذج مختلف. استدعاء دالة واحد، تنفيذ على مستوى C، بدون حلقة Python."




3. المفاهيم الأساسية

(1) التجميعات الأساسية

`python import numpy as np

a = np.مصفوفة([3, 7, 1, 9, 5])

print(a.sum()) # 25 print(a.mean()) # 5.0 print(a.std()) # 2.828 print(a.var()) # 8.0 print(a.min()) # 1 print(a.max()) # 9 print(a.argmin()) # 2 (فهرس الأصغر) print(a.argmax()) # 3 (فهرس الأكبر) print(a.ptp()) # 8 (الذروة إلى الذروة: max - min) `

` ext

المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. ` ⚠️ ملاحظة: الكود أدناه يحتاج إلى التشغيل في بيئة Python محلية.

(2) التجميع على أساس المحاور

`python import numpy as np

a = np.arange(12).reshape(3, 4) print(a)

[[ 0 1 2 3]


  1. [ 4 5 6 7]

  1. [ 8 9 10 11]]

6. المجموع على طول المحور 0 (عمودياً)

print(a.sum(axis=0)) # [12 15 18 21]


7. المجموع على طول المحور 1 (صفياً)

print(a.sum(axis=1)) # [6 22 38]


8. المجموع الكلي

print(a.sum()) # 66 `

` ext

المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. ` ⚠️ ملاحظة: الكود أدناه يحتاج إلى التشغيل في بيئة Python محلية.

(3) الدوال الآمنة مع NaN

البيانات الواقعية غالباً ما تحتوي على قيم NaN. التجميعات القياسية تنشر NaN:

`python import numpy as np

a = np.مصفوفة([1.0, 2.0, np.nan, 4.0])

print(a.mean()) # nan print(np.nanmean(a)) # 2.333 print(np.nansum(a)) # 7.0 print(np.nanstd(a)) # 1.247 print(np.nanmin(a)) # 1.0 print(np.nanmax(a)) # 4.0 `

` ext

المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. ` ⚠️ ملاحظة: الكود أدناه يحتاج إلى التشغيل في بيئة Python محلية.

(4) العمليات التراكمية

`python import numpy as np

a = np.مصفوفة([1, 2, 3, 4, 5])

print(np.cumsum(a)) # [1 3 6 10 15] print(np.cumprod(a)) # [1 2 6 24 120] `


▶ مثال

` ext

المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. `

: التجميع على المحاور لمصفوفة ثنائية الأبعاد (الصعوبة ⭐⭐)

`python import numpy as np

a = np.arange(12).reshape(3, 4)

print("axis=0 (عمودياً):") print(f" sum: {a.sum(axis=0)}") print(f" mean: {a.mean(axis=0)}") print(f" max: {a.max(axis=0)}")

print("axis=1 (صفياً):") print(f" sum: {a.sum(axis=1)}") print(f" mean: {a.mean(axis=1)}") print(f" max: {a.max(axis=1)}") `

▶ مثال: التجميع الآمن مع NaN (الصعوبة ⭐⭐)

`python import numpy as np

data = np.مصفوفة([1.0, 2.0, np.nan, 4.0, np.nan, 6.0])

print("Standard mean:", data.mean()) print("nanmean:", np.nanmean(data)) print("nansum:", np.nansum(data)) print("nanstd:", np.nanstd(data)) print("nanmin:", np.nanmin(data)) print("nanmax:", np.nanmax(data))


9. عدد القيم غير NaN

print("Valid count:", np.sum(~np.isnan(data))) `

المخرجات:

ext Standard mean: nan nanmean: 3.25 nansum: 13.0 nanstd: 1.9202864369672785 nanmin: 1.0 nanmax: 6.0 Valid count: 4

▶ مثال: العمليات التراكمية (الصعوبة ⭐)

`python import numpy as np


10. المجموع الجاري

sales = np.مصفوفة([10, 15, 7, 20, 13]) cumulative = np.cumsum(sales) print("Daily sales:", sales) print("Cumulative:", cumulative)


11. الضرب التراكمي

factors = np.مصفوفة([1.1, 1.05, 0.98, 1.02]) growth = np.cumprod(factors) print("Growth factors:", growth)


12. مجموع تراكمي ثنائي الأبعاد

a = np.arange(12).reshape(3, 4) print("Row-wise cumsum:\n", np.cumsum(a, axis=1)) `

المخرجات:

ext Daily sales: [10 15 7 20 13] Cumulative: [10 25 32 52 65] Growth factors: [1.1 1.155 1.1319 1.154538] Row-wise cumsum: [[ 0 1 3 6] [ 4 9 15 22] [ 8 17 27 38]]




❓ أسئلة شائعة

س ما الفرق بين a.sum() و np.sum(a)؟
ج لا فرق — هما نفس الطريقة. .sum() هي طريقة على كائن ndarray؛ p.sum(a) هي صيغة الدالة. استخدم ما يبدو أفضل في السياق.
س كيف أتعامل مع قيم NaN في التجميع؟
ج استخدم p.nanmean() و p.nansum() و p.nanstd() إلخ. هذه الدوال تتخطى قيم NaN تلقائياً. الدوال القياسية mean() و sum() تنشر NaN.
س ما هو keepdims؟
ج keepdims=True يحافظ على البعد المُختزل كحجم 1، مما يسهل البث. على سبيل المثال، .sum(axis=1, keepdims=True) تُرجع شكلاً (3, 1) بدلاً من (3,).

📖 ملخص



📝 تمارين

  1. مبتدئ (الصعوبة ⭐): أنشئ مصفوفة 4x4 من أعداد صحيحة عشوائية 0-100. احسب المجموع والمتوسط والأصغر والأكبر والانحراف المعياري للمصفوفة بأكملها. ثم احسب نفس الإحصائيات على طول كل محور.

  2. متوسط (الصعوبة ⭐⭐): أنشئ مصفوفة تحتوي على قيم NaN. احسب المتوسط مع وبدون الدوال الآمنة مع NaN. اشرح الفرق.

  3. متقدم (الصعوبة ⭐⭐⭐): ولّد مصفوفة 10,000x5 من بيانات عشوائية. احسب درجة z (التوحيد القياسي) لكل عمود باستخدام المتوسط والانحراف المعياري على أساس المحور. تحقق من أن كل عمود له متوسط ≈ 0 وانحراف معياري ≈ 1.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%