NumPy massiv shaklini o‘zgartirish (reshape)


ULASHISH

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!