NumPy massivlarini iteratsiya qilish
Massivlarni iteratsiya qilish
Iteratsiya — elementlarni birma-bir aylanib chiqish demakdir.
NumPyda ko‘p o‘lchamli massivlar bilan ishlaganimiz uchun buni Pythonning oddiy for sikli yordamida bajarishimiz mumkin.
Agar 1-D massiv bo‘ylab iteratsiya qilsak, u har bir elementni birma-bir aylanib chiqadi.
Misol
Quyidagi 1-D massiv elementlari bo‘ylab iteratsiya qiling:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
O‘zingiz sinab ko‘ring »
2-D massivlarni iteratsiya qilish
2-D massivda u barcha qatorlarni aylanib chiqadi.
Misol
Quyidagi 2-D massiv elementlari bo‘ylab iteratsiya qiling:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
print(x)
O‘zingiz sinab ko‘ring »
Agar n-D massiv bo‘ylab iteratsiya qilsak, u n-1-o‘lchamni birma-bir aylanib chiqadi.
Haqiqiy qiymatlarni, ya’ni skalyarlarni qaytarish uchun massivlarni har bir o‘lchamda iteratsiya qilishimiz kerak.
Misol
2-D massivning har bir skalyar elementi bo‘ylab iteratsiya qiling:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
for y in x:
print(y)
O‘zingiz sinab ko‘ring »
3-D massivlarni iteratsiya qilish
3-D massivda u barcha 2-D massivlarni aylanib chiqadi.
Misol
Quyidagi 3-D massiv elementlari bo‘ylab iteratsiya qiling:
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)
O‘zingiz sinab ko‘ring »
Haqiqiy qiymatlarni, ya’ni skalyarlarni qaytarish uchun massivlarni har bir o‘lchamda iteratsiya qilishimiz kerak.
Misol
Skalyarlargacha iteratsiya qiling:
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)
O‘zingiz sinab ko‘ring »
nditer() yordamida massivlarni iteratsiya qilish
nditer() funksiyasi — eng oddiydan tortib juda murakkab iteratsiyalargacha ishlatilishi mumkin bo‘lgan yordamchi funksiya. U iteratsiyada duch keladigan ba’zi asosiy muammolarni hal qiladi, keling, uni misollar bilan ko‘rib chiqamiz.
Har bir skalyar element bo‘ylab iteratsiya qilish
Oddiy for sikllarida massivning har bir skalyarini aylanib chiqish uchun n ta for siklidan foydalanishimiz kerak, buni juda ko‘p o‘lchamli massivlar uchun yozish qiyin bo‘lishi mumkin.
Misol
Quyidagi 3-D massiv bo‘ylab iteratsiya qiling:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
O‘zingiz sinab ko‘ring »
Massivni boshqa ma’lumot tiplari bilan iteratsiya qilish
Iteratsiya vaqtida elementlarning ma’lumot tipini o‘zgartirish uchun op_dtypes argumentidan foydalanib, unga kutilayotgan ma’lumot tipini uzatishimiz mumkin.
NumPy elementning ma’lumot tipini joyida (element massivda turgan joyda) o‘zgartirmaydi, shuning uchun bu amalni bajarish uchun unga boshqa joy kerak bo‘ladi; bu qo‘shimcha joy bufer deb ataladi va uni nditer()da yoqish uchun flags=['buffered']ni uzatamiz.
Misol
Massiv elementlarini string sifatida iteratsiya qiling:
import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
O‘zingiz sinab ko‘ring »
Turli qadam o‘lchami bilan iteratsiya qilish
Avval filtrlash, so‘ng iteratsiyadan foydalanishimiz mumkin.
Misol
2D massivning har bir skalyar elementi bo‘ylab 1 tadan elementni tashlab o‘tib iteratsiya qiling:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
O‘zingiz sinab ko‘ring »
ndenumerate() yordamida raqamlangan iteratsiya
Raqamlash (enumeration) — narsalarning tartib raqamini birma-bir ko‘rsatib borish demakdir.
Ba’zan iteratsiya vaqtida elementning tegishli indeksi kerak bo‘ladi; bunday holatlarda ndenumerate() metodidan foydalanish mumkin.
Misol
Quyidagi 1D massiv elementlarini raqamlab chiqing:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
print(idx, x)
O‘zingiz sinab ko‘ring »
Misol
Quyidagi 2D massiv elementlarini raqamlab chiqing:
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)
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
