NumPy massiv shaklini o‘zgartirish (reshape)
Massivlar shaklini o‘zgartirish (reshape)
Shaklni o‘zgartirish (reshaping) — massivning shaklini o‘zgartirish demakdir.
Massivning shakli — har bir o‘lchamdagi elementlar soni.
Shaklni o‘zgartirish orqali o‘lchamlarni qo‘shishimiz yoki olib tashlashimiz, yoki har bir o‘lchamdagi elementlar sonini o‘zgartirishimiz mumkin.
Shaklni 1-D massivdan 2-D massivga o‘zgartirish
Misol
12 ta elementli quyidagi 1-D massivni 2-D massivga aylantiring.
Eng tashqi o‘lchamda har birida 3 tadan element bo‘lgan 4 ta massiv bo‘ladi:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)
O‘zingiz sinab ko‘ring »
Shaklni 1-D massivdan 3-D massivga o‘zgartirish
Misol
12 ta elementli quyidagi 1-D massivni 3-D massivga aylantiring.
Eng tashqi o‘lchamda 2 ta massiv bo‘ladi, ularning har biri 3 ta massivdan iborat, ichki massivlarning har birida esa 2 tadan element bor:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
O‘zingiz sinab ko‘ring »
Istalgan shaklga o‘zgartirish mumkinmi?
Ha, agar shaklni o‘zgartirish uchun talab qilinadigan elementlar soni ikkala shaklda ham teng bo‘lsa.
8 ta elementli 1D massivni har bir qatorida 4 tadan element bo‘lgan 2 qatorli 2D massivga aylantirishimiz mumkin, lekin uni har bir qatorida 3 tadan element bo‘lgan 3 qatorli 2D massivga aylantira olmaymiz, chunki buning uchun 3x3 = 9 ta element kerak bo‘ladi.
Misol
8 ta elementli 1D massivni har bir o‘lchamida 3 tadan element bo‘lgan 2D massivga aylantirib ko‘ring (xato yuzaga keladi):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
O‘zingiz sinab ko‘ring »
Nusxa qaytaradimi yoki ko‘rinish?
Misol
Qaytarilgan massiv nusxa yoki ko‘rinish ekanini tekshiring:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
O‘zingiz sinab ko‘ring »
Yuqoridagi misol asl massivni qaytaradi, demak, bu ko‘rinish.
Noma’lum o‘lcham
Bitta "noma’lum" o‘lchamdan foydalanishingiz mumkin.
Ya’ni reshape metodida o‘lchamlardan biri uchun aniq sonni ko‘rsatishingiz shart emas.
Qiymat sifatida -1ni uzating, NumPy bu sonni siz uchun o‘zi hisoblab beradi.
Misol
8 ta elementli 1D massivni 2x2 elementli 3D massivga aylantiring:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
O‘zingiz sinab ko‘ring »
Eslatma: -1 qiymatini bittadan ortiq o‘lchamga uzata olmaymiz.
Massivlarni yassilash (flattening)
Massivni yassilash — ko‘p o‘lchamli massivni 1D massivga aylantirish demakdir.
Buning uchun reshape(-1)dan foydalanishimiz mumkin.
Misol
Massivni 1D massivga aylantiring:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)
O‘zingiz sinab ko‘ring »
Eslatma: NumPyda massivlar shaklini o‘zgartirish uchun ko‘plab funksiyalar bor: flatten, ravel, shuningdek, elementlarni qayta joylashtirish uchun rot90, flip, fliplr, flipud va hokazo. Ular NumPyning o‘rta va yuqori darajadagi bo‘limiga kiradi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
