NumPy Dizi Yineleme


Dizileri yineleme

Yineleme, öğelerden tek tek geçmek anlamına gelir.

Numpy'de çok boyutlu dizilerle uğraştığımız için bunu python'un temel fordöngüsünü kullanarak yapabiliriz.

1 boyutlu bir diziyi yinelersek, her bir elemandan birer birer geçer.

Örnek

Aşağıdaki 1-D dizisinin öğelerini yineleyin:

import numpy as np

arr = np.array([1, 2, 3])

for x in arr:
  print(x)

2-B Dizileri Yineleme

2 boyutlu bir dizide tüm satırlardan geçecektir.

Örnek

Aşağıdaki 2 boyutlu dizinin öğelerini yineleyin:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  print(x)

Bir n -D dizisini yinelersek, birer birer n-1'inci boyuttan geçecektir.

Gerçek değerleri, skalerleri döndürmek için, her boyutta dizileri yinelemeliyiz.

Örnek

2 boyutlu dizinin her bir skaler öğesinde yineleme yapın:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  for y in x:
    print(y)


3-B Dizileri Yineleme

3 boyutlu dizide tüm 2 boyutlu dizilerden geçecektir.

Örnek

Aşağıdaki 3-B dizinin öğelerini yineleyin:

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)

Gerçek değerleri, skalerleri döndürmek için, her boyutta dizileri yinelemeliyiz.

Örnek

Skalere kadar yineleyin:

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() Kullanarak Dizileri Yineleme

İşlev nditer(), çok temelden çok ileri yinelemelere kadar kullanılabilen bir yardımcı işlevdir. Yinelemede karşılaştığımız bazı temel sorunları çözüyor, örneklerle üzerinden geçelim.

Her Skaler Elemanda Yineleme

Temel fordöngülerde, bir dizinin her bir skalerini yinelerken , çok yüksek boyutlu diziler için yazması zor olabilen n döngü kullanmamız gerekir. for

Örnek

Aşağıdaki 3-B diziyi yineleyin:

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

for x in np.nditer(arr):
  print(x)

Farklı Veri Türleriyle Yinelenen Dizi

op_dtypesYineleme sırasında öğelerin veri türünü değiştirmek için argüman kullanabilir ve beklenen veri türünü iletebiliriz.

NumPy, yerinde öğenin veri türünü değiştirmez (öğenin dizide olduğu yer), bu nedenle bu eylemi gerçekleştirmek için başka bir alana ihtiyaç duyar, bu fazladan boşluğa arabellek denir ve onu etkinleştirmek için nditer()geçiyoruz flags=['buffered'].

Örnek

Diziyi bir dize olarak yineleyin:

import numpy as np

arr = np.array([1, 2, 3])

for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
  print(x)

Farklı Adım Boyutuyla Yineleme

Filtreleme ve ardından yineleme kullanabiliriz.

Örnek

1 öğeyi atlayarak 2B dizinin her skaler öğesini yineleyin:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for x in np.nditer(arr[:, ::2]):
  print(x)

denumerate() Kullanarak Numaralandırılmış Yineleme

Numaralandırma, bir şeyin sıra numarasını tek tek belirtmek anlamına gelir.

Bazen yineleme sırasında öğenin karşılık gelen dizinine ihtiyaç duyarız, ndenumerate()yöntem bu kullanım durumları için kullanılabilir.

Örnek

Aşağıdaki 1B dizi öğelerinde numaralandırın:

import numpy as np

arr = np.array([1, 2, 3])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

Örnek

Aşağıdaki 2B dizinin öğelerini numaralandırın:

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)