๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python

[Python] Numpy - ๋ฐฐ์—ด reshape

by ๐ŸฅญMango 2020. 9. 18.

๋ฐฐ์—ด reshape

Numpy๋ฐฐ์—ด์€ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ์— ์ž์œ ๋กญ๊ฒŒ ๋‹ค๋ฅธ shape๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
print(arr) #4*3

#[[ 1  2  3]
#[ 4  5  6]
#[ 7  8  9]
#[10 11 12]]

4*3์˜ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ

 

arr1 = np.reshape(arr, (12))
print(arr1)
#[ 1  2  3  4  5  6  7  8  9 10 11 12]

์ด๋Ÿฐ์‹์œผ๋กœ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

arr1 = arr.reshape(12)
print(arr1)
#[ 1  2  3  4  5  6  7  8  9 10 11 12]

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

arr2 = arr.reshape(2, 6)
print(arr2)
#[[ 1  2  3  4  5  6]
# [ 7  8  9 10 11 12]]

arr3 = np.reshape(arr, (2, 2, 3))
print(arr3)
#[[[ 1  2  3]
  #[ 4  5  6]]

 #[[ 7  8  9]
  #[10 11 12]]]

์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

arr4 = np.reshape((arr, 3, 3)) #error

ํ•˜์ง€๋งŒ ์ด์™€ ๊ฐ™์ด ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งž์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

arr3[0, 0, 0] = 99
print(arr)
#[[99  2  3]
#[ 4  5  6]
#[ 7  8  9]
#[10 11 12]]

์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ

๋ฐฐ์—ด reshape์€ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์กด์žฌํ•˜๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด View๋ฅผ ์ œ๊ณตํ•  ๋ฟ์ด๋‹ค.

 

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
#[[[1 2]
# [3 4]]

#[[5 6]
# [7 8]]]

๋ฐฐ์—ด reshape์—์„œ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋Š” ๋ณด์กด๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ๋ช…์‹œํ•  ํ•„์š”๋Š” ์—†๋‹ค.

์ž๋™์œผ๋กœ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด -1์„ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

*์—ฌ๊ธฐ์„œ -1์€ -1์ด ์•„๋‹ˆ๋‹ค.

 

wrongarr = arr.reshape(2, -1, -1) #error

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ฐจ์›์˜ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

1์ฐจ์› ๋ฐฐ์—ด๋กœ reshape

arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)
#[1 2 3 4 5 6]

print(np.ravel(arr))
print(arr.ravel())
#[1 2 3 4 5 6]

print(arr.flatten())
#[1 2 3 4 5 6]
#print(np.flatten(arr)) error

1์ฐจ์› ๋ฐฐ์—ด๋กœ reshapeํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” -1์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ravel, flatten์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ

ravel์˜ ๊ฒฝ์šฐ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋‹ค ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,

flatten์˜ ๊ฒฝ์šฐ np.flatten()์™€ ๊ฐ™์€ ํ˜•์‹์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋Œ“๊ธ€