به آموزشگاه مجازی سینا خوش آمدید!

تکرار کردن آرایه در NumPy

امتیاز
(0)

تکرار کردن(Iterating)، یعنی جستجو کردن عناصر به صورت یک به یک. 

همان طور که ما با آرایه‌های چند بُعدی در numpy کار می‌کنیم، برای تکرار کردن عناصر آنها می‌توانیم از یک حلقه‌ی for در پایتون استفاده کنیم. 

اگر یک آرایه‌ی یک بُعدی را تکرار(iterate) کنیم، روی هر عنصر آن به صورت یک به یک، جسجتو خواهد شد. یعنی روی هر عنصر آن عملیاتی انجام خواهد شد. 

مثال شماره 1

تکرار کردن روی عناصر آرایه ی یک بُعدی زیر:

import numpy as np

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

for x in arr:
  print(x)

نتیجه:

1
2
3
امتحان کنید

تکرار کردن آرایه‌های دو بُعدی

در یک آرایه‌ی دو بُعدی، روی تمام ردیف‌ها تکرار انجام خواهد شد:

مثال شماره 2

تکرار کردن روی عناصر آرایه‌ی دوبعدی زیر:

import numpy as np

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

for x in arr:
  print(x)

نتیجه:

[1 2 3]
[4 5 6]
امتحان کنید

نکته: اگر یک آرایه‌ی n بُعدی را تکرار کنیم، بُعدِ n-1اُم، به صورت یک به یک جستجو خواهد شد.  


برای برگرداندن مقادیر حقیقی، یا همان اسکالرها، باید آرایه ها را در هر بُعد تکرار کنیم. 

مثال شماره 3

تکرار کردن روی هر عنصرِ اسکالر از یک آرایه‌ی دو بُعدی:

import numpy as np

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

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

نتیجه:

1
2
3
4
5
6
امتحان کنید

تکرار کردن آرایه‌های سه بُعدی

در یک آرایه‌ی سه بُعدی، تمام آرایه‌های دو بُعدی جستجو(go through) خواهند شد. 

مثال شماره 4

تکرار کردن روی عناصر آرایه‌ی سه بُعدی زیر:

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 represents the 2-D array:")
  print(x)

نتیجه:

x represents the 2-D array:
[[1 2 3]
 [4 5 6]]
x represents the 2-D array:
[[ 7  8  9]
 [10 11 12]]
امتحان کنید

برای برگرداندن مقادیر حقیقی، یعنی اسکالرها، ما باید آرایه‌ها را در هر بُعد تکرار کنیم. 

مثال شماره 5

تکرار کردن اسکالرها:

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)

نتیجه:

1
2
3
4
5
6
7
8
9
10
11
12
امتحان کنید

تکرار کردن آرایه‌ها با استفاده از nditer()

تابع nditer() یک تابع به درد بخور است که می‌توانیم از آن برای تکرارهای(iterations) بسیار ساده تا تکرارهای بسیار پیشرفته استفاده کنیم. این تابع برخی از مسائل ساده‌‌ای که در تکرار کردن(iteration) با آنها مواجه می‌شویم را حل می‌کند؛ اجازه دهید چند مثال را بررسی کنیم. 

تکرار کردن روی تمام عناصر اسکالر

در حلقه‌های ساده‌ی for، اگر بخواهیم روی هر اسکالر از آرایه تکرار بزنیم، نیاز داریم از n حلقه‎‌ی for استفاده کنیم که نوشتن آنها برای آرایه‌هایی که بُعدهای زیادی دارند، مشکل است. 

مثال شماره 6

تکرار زدن روی آرایه‌ی سه بُعدی زیر:

import numpy as np

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

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

نتیجه:

1
2
3
4
5
6
7
8
امتحان کنید

تکرار کردن آرایه با نوعِ داده‌های مختلف

ما می‌توانیم از آرگومان op_dtypes استفاده کنیم و نوع داده‌ی دلخواه خود را به آن پاس بدهیم تا در هنگام تکرار کردن(iterating)، نوعِ داده‌ی عناصر را تغییر دهد. Nunpy نوعِ داده‌ی عنصر را در مکانی که قرار دارد(in-place) تغییر نمی‌دهد(چونکه این عنصر در آرایه قرار دارد)، بنابراین نیاز دارد در فضای دیگری این کار را انجام دهد. این فضای اضافی، بافر(buffer) نامیده می‌شود، و برای فعال کردن آن، عبارت flags=['buffered'] را به تابع nditer() پاس می‌دهیم. 

مثال شماره 7

تکرار کردن روی آرایه به صورت رشته‌ای(string):

import numpy as np

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

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

نتیجه:

b'1'
b'2'
b'3'
امتحان کنید

تکرار کردن با استفاده از سایزهای متفاوتِ گام(Different Step Size)

ما می‌توانیم از فیلتر کردن و سپس تکرار استفاده کنیم.

مثال شماره 8

تکرار کردن روی هر اسکالر از آرایه‌ی دوبُعدی و نادیده گرفتن یک عنصر(مترجم: یعنی نادیده گرفتن اعداد زوج):

import numpy as np

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

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

نتیجه:

1
3
5
7
امتحان کنید

تکرارهای شمارش شده با استفاده از ndenumerate()

شمارش(Enumeration) یعنی مشخص کردن شماره‌ی دنباله‌ای از اعداد(somethings) به صورت یک به یک. گاهی اوقات، ما نیاز داریم در هنگام تکرار کردن(iterating)، به اندیس متناظرِ یک عنصر دسترسی داشته باشیم، با استفاده از متد ndenumerate() می‌توانیم برای این کار را انجام دهیم. 

مثال شماره 9

شمارش کردن روی عناصر آرایه‌ی 1 بُعدی زیر:

import numpy as np

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

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

نتیجه:

(0,) 1
(1,) 2
(2,) 3
امتحان کنید

مثال شماره 10

شمارش کردن روی عناصر آرایه‌ی دو بُعدی زیر:

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)

نتیجه:

(0, 0) 1
(0, 1) 2
(0, 2) 3
(0, 3) 4
(1, 0) 5
(1, 1) 6
(1, 2) 7
(1, 3) 8
امتحان کنید

 


منبع: www.w3schools.com/python/numpy

 

  • بازدید: 17

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال