NumPy Массивын хэмжээсийн өөрчлөх /Reshaping/
Reshaping нь массивын хэлбэрийг өөрчлөх болно.
Массивын хэлбэр гэдэг нь массивын элементийн тоо юм.
Дахин хэлбэржүүлсэнээр бид хэмжээс нэмэх, хасах эсвэл хэмжээ бүрийн элементийн тоог өөрчлөх боломжтой юм.
1-D массивыг 2-D хэлбэрт шилжүүлэх
Жишээ нь
12 элементтэй 1 хэмжээст массивыг. 3-н элементтэй, 4-н хэмжээстэй 2-D массив болгон хөрвүүлж үзье
import numpy as np
mas = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newmas = mas.reshape (4, 3)
print (newmas)
Үр дүн
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
1-D массивыг 3-D хэлбэрт шилжүүлэх
Жишээ нь
12 элементтэй 1 хэмжээст массивыг. 3-н хэмжээстэй 3-D массив болгон хөрвүүлж үзье
2 элементтэй, 3-н хэмжээстэй, 2-D хоёр массив агуулсан 3-н хэмжээст хөрвүүж байна.
import numpy as np
mas = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newmas = mas.reshape (2, 3, 2)
print (newmas)
Үр дүн
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[7 8]
[9 10]
[11 12]]]
Бид хүссэн хэлбэрт шилжүүлж өөрчилж чадах уу?
Хэлбэр өөрчлөгдөхөд шаардлагатай элементүүд нь хоёр хэлбэрийн хувьд тэнцүү үед боломжтой юм.
Бид 8-н элементтэй 1-D массивыг 2 мөртэй 2-D массив болгон өөрчлөх боломжтой боловч 3Х3 хэмжээтэй 2-D массив үүсгэх боломжгүй юм. 3Х3 массивд 9-н элемент шаардлагатай.
1-D массивыг 3-D хэлбэрт шилжүүлэх
Жишээ нь
import numpy as np
mas = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newmas = mas.reshape (3, 3)
print (newmas)
Үр дүн
Traceback(most recent call last):
File "demo_numpy_array_reshape_error.py", line 5 in <module>
ValueError: cannot reshape array of size 8 into shape (3,3)
Copy эсвэл View -рүү буцаах уу?
Жишээ нь
Copy эсвэл View эсэхийг шалгаж үзье
import numpy as np
mas = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newmas = (mas.reshape (2, 4).base)
Үр дүн
[1, 2, 3, 4, 5, 6, 7, 8]
View ч гэсэн үндсэн үндсэн массивыг буцаах болно.
Unknown Dimension буюу Үл мэдэгдэх хэмжээс
Нэг Unknown Dimention буюу үл мэдэгдэх хэмжээс байхыг зөвшөөрдөг.
Энэ нь хэмжээсийн тоог яг нарийн зааж өгөх шаардлагагүй хэлбэрийг өөрчлөх арга юм.
-1 утгаар NumPY нь энэ тоог тооцоолж өгнө.
Жишээ нь
8-н элементтэй 1-D массивыг 2Х2 элементтэй 3D массив болгон хөрүүлж үзье
import numpy as np
mas = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newmas = (mas.reshape (2, 2, -1)
print (newmas)
Үр дүн
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
тэмдэглэл: -1 ээс олон хэмжигдэхүүн дамжуулах боломжгүй.
Flattening the array буюу Массив тэгшлэх
Flattening the array буюу Массив тэгшлэх гэдэг нь олон хэмжээст массивыг нэг хэмжээст массив болгон хөрвүүлэхийг хэлнэ.
Үүнийг бид reshape(-1)
-ийг ашиглан хийх болно.
Жишээ нь
1-D массив болгон хөрвүүлж үзье
import numpy as np
mas = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
newmas = (mas.reshape (-1)
print (newmas)
Үр дүн
[1 2 3 4 5 6 7 8]