تكرار صفيف NumPy
المصفوفات المتكررة
التكرار يعني المرور بالعناصر واحدًا تلو الآخر.
نظرًا لأننا نتعامل مع المصفوفات متعددة الأبعاد في numpy ، يمكننا القيام بذلك باستخدام
for
حلقة أساسية من python.
إذا قمنا بالتكرار على مصفوفة أحادية الأبعاد ، فسوف تمر عبر كل عنصر واحدًا تلو الآخر.
مثال
كرر عناصر المصفوفة 1-D التالية:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
تكرار المصفوفات ثنائية الأبعاد
في صفيف ثنائي الأبعاد سوف يمر عبر جميع الصفوف.
مثال
كرر عناصر المصفوفة ثنائية الأبعاد التالية:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
print(x)
إذا قمنا بالتكرار على مصفوفة n -D فسوف تمر بالبعد n-1th واحدًا تلو الآخر.
لإرجاع القيم الفعلية ، الحجميات ، علينا تكرار المصفوفات في كل بُعد.
مثال
كرر على كل عنصر قياسي في المصفوفة ثنائية الأبعاد:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
for y in x:
print(y)
تكرار المصفوفات ثلاثية الأبعاد
في مصفوفة ثلاثية الأبعاد ستمر خلال جميع المصفوفات ثنائية الأبعاد.
مثال
كرر عناصر المصفوفة ثلاثية الأبعاد التالية:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
print(x)
لإرجاع القيم الفعلية ، الحجميات ، علينا تكرار المصفوفات في كل بُعد.
مثال
كرر وصولاً إلى الحجميات:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
for y in x:
for z in y:
print(z)
تكرار المصفوفات باستخدام nditer ()
الوظيفة nditer()
هي وظيفة مساعدة يمكن استخدامها من التكرارات الأساسية جدًا إلى التكرارات المتقدمة جدًا. إنه يحل بعض المشكلات الأساسية التي نواجهها في التكرار ، فلنستعرضها بأمثلة.
التكرار على كل عنصر عددي
في الحلقات الأساسية for
، بالتكرار خلال كل عدد قياسي من المصفوفة ، نحتاج إلى استخدام
حلقات n
for
والتي قد يكون من الصعب كتابتها للمصفوفات ذات الأبعاد العالية جدًا.
مثال
كرر من خلال المصفوفة ثلاثية الأبعاد التالية:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
مصفوفة متكررة بأنواع بيانات مختلفة
يمكننا استخدام op_dtypes
الوسيطة وتمرير نوع البيانات المتوقع لها لتغيير نوع بيانات العناصر أثناء التكرار.
لا يغير NumPy نوع بيانات العنصر في مكانه (حيث يكون العنصر في المصفوفة) لذلك يحتاج إلى مساحة أخرى لتنفيذ هذا الإجراء ، وتسمى تلك المساحة الإضافية المخزن المؤقت ، ومن أجل تمكينه في nditer()
تمرير flags=['buffered']
.
مثال
كرر خلال المصفوفة كسلسلة:
import numpy as np
arr = np.array([1, 2, 3])
for x in
np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
التكرار بخطوات مختلفة الحجم
يمكننا استخدام التصفية ثم التكرار.
مثال
كرر خلال كل عنصر قياسي للمصفوفة ثنائية الأبعاد متخطياً عنصرًا واحدًا:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
عدّد التكرار باستخدام ndenumerate ()
العد يعني ذكر رقم التسلسل للأشياء واحدًا تلو الآخر.
نطلب أحيانًا فهرسًا مطابقًا للعنصر أثناء التكرار ، ndenumerate()
يمكن استخدام الطريقة لحالات الاستخدام هذه.
مثال
تعداد عناصر المصفوفات 1D التالية:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in
np.ndenumerate(arr):
print(idx, x)
مثال
عد على عناصر المصفوفة ثنائية الأبعاد التالية:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for idx, x in np.ndenumerate(arr):
print(idx, x)