تکرار کردن آرایه در NumPy
تکرار کردن(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. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.