تكرار صفيف 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)