NumPy Массивыг давтах /Iterating/
Давтах гэдэг нь элементүүдийг нэг нэгээр нь дамжин өнгөрөх процесс юм.
NumPy дээр олон хэмжээст массивтай харицахад Python-н үндсэн давталтыг ашиглана.
Хэрэв 1-D буюу нэг хэмжээст массив дээр давталт хийвэл элемент тус бүрээр нь давтах болно.
1-D буюу нэг хэмжээст массив давтах
Жишээ нь
1-D массивын элемент тус бүрээр давталт хийж үзье
import numpy as np
mas = np.array([1, 2, 3, 4, 5])
for x in mas
print (x)
Үр дүн
1
2
3
4
5
2-D буюу хоёр хэмжээст массив давтах
Нэг хэмжээст массив нь 2 хэмжээст массивын элемент гэдгийг бид өмнөх хичээлээр үзсэн.
Жишээ нь
2-D массив давтах
import numpy as np
mas = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in mas
print (x)
Үр дүн
[1 2 3 4]
[5 6 7 8]
Бодит утга, /scalars/ скалярыг буцаахын тулд массивыг хэмжээс бүр дээр давтана.
Жишээ нь
2-D массив давтах
import numpy as np
mas = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in mas:
for y in x:
print (y)
Үр дүн
1
2
3
4
5
6
7
8
3-D буюу гурван хэмжээст массив давтах
Хоёр хэмжээст массив нь 3 хэмжээст массивын элемент гэдгийг бид өмнөх хичээлээр үзсэн.
Жишээ нь
3-D массив давтах
import numpy as np
mas = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], [[9, 10, 11, 12], [13, 14, 15, 16]]])
for x in mas:
print ("x нь 2-D массив юм")
print (x)
Үр дүн
x нь 2-D массив юм
[[1 2 3 4]
[5 6 7 8]]
x нь 2-D массив юм
[[9 10 11 12]
[13 14 15 16]]
Бодит утга, /scalars/ скалярыг буцаахын тулд массивыг хэмжээс бүр дээр давтана.
Жишээ нь
3-D массив давтах
import numpy as np
mas = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], [[9, 10, 11, 12], [13, 14, 15, 16]]])
for x in mas:
for y in x:
for z in y:
print(z)
Үр дүн
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Nditer() ашиглан массив давтах
Nditer() функц нь ашиглахад маш энгийн, хурдан давталт хийх боломжийг олгодог туслах функц юм. Энэхүү функц нь давталтад тулгардаг зарим үндсэн асуудлуудыг хялбар аргаар шийдэж өгсөн байна.
Скаляр элемент бүр дээр давталт хийх
Жишээ нь
3-D массив давтах
import numpy as np
mas = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
for x in np.nditer(mas):
print (x)
Үр дүн
1
2
3
4
5
6
7
8
9
10
11
12
Массивыг өөр өгөгдлийн төрлөөр давтах
op_dtypes
аргументыг ашиглан давтаж байхдаа элементүүдийн өгөгдлийн төрлийг өөрчилж болно.
NumPy нь элементийн өгөгдлийн төрлийг өөрчилдөггүй. Учир нь элемент нь массивд байгаа. Элементийн төрлийг өөрчлөхийн тулд массивд нэмэлт зай хэрэгтэй болно. Нэмэлт зайг буфер гэнэ.Үүнийг nditer()
-д идэвхжүүлэхийн тулд бид flags=['buffered']
-г ашиглана.
Жишээ нь
import numpy as np
mas = np.array([1, 2, 3, 4])
for x in np.nditer(mas, flags=['buffered'], op_dtypes=['S']):
print (x)
Үр дүн
b'1'
b'2'
b'3'
b'4'
Алхамаар давтах
Эхлээд шүүлтүүр ашиглаж дараа нь давталт хийж боломжтой.
Жишээ нь
2 элементийг алгасаж, 2D массивын скаляр элемент бүрийг давтана.
import numpy as np
mas = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(mas[:, ::3]):
print (x)
Үр дүн
1
4
5
8
Тоолсон давталт
Тоолсон давталт гэдэг нь давталт бүрийг нэг нэгээр нь дугаарлахыг хэлнэ.
Заримдаа бид давталт хийхдээ элементийн индексийг шаарддаг. Тэгвэл бид ndenumerate() функцийг ашиглаж болно.
Жишээ нь
1D массивын элементийг тоолж үзье.
import numpy as np
mas = np.array([1, 2, 3, 4, 5])
for idx, x in np.ndenumerate(mas):
print (idx, x)
Үр дүн
(0,) 1
(1,) 2
(2,) 3
(3,) 4
(4,) 5
Жишээ нь
2D массивын элементийг тоолж үзье.
import numpy as np
mas = np.array([[1, 2, 3, 4][5, 6, 7, 8]])
for idx, x in np.ndenumerate(mas):
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