[Python] Numpy - ๋ฐฐ์ด ์ฌ๋ผ์ด์ฑ(slicing)
๋ฐฐ์ด ์ฌ๋ผ์ด์ฑ
ํ์ด์ฌ ๋ฆฌ์คํธ์ ์ ์ฌํ๊ฒ Numpy ๋ฐฐ์ด๋ ์ฌ๋ผ์ด์ฑ์ด ๊ฐ๋ฅํ๋ค.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
b = a[:2, 1:3]
print(b)
#[[2 3]
#[6 7]]
Numpy๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ค์ฐจ์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ์ฌ๋ผ์ด์ฑ ํ ์ง ๋ช ํํ๊ฒ ํด์ผํ๋ค.
print(a[0, 1]) #2
b[0, 0] = 77 #b์ [0, 0]์ a์ [0, 1]
print(a)
#[[ 1 77 3 4]
#[ 5 6 7 8]
#[ 9 10 11 12]]
Numpy๋ฐฐ์ด์ ์ฌ๋ผ์ด์ฑ์ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ์ง ์๋๋ค. ๊ธฐ์กด ๋ฐฐ์ด์ ๋ํ ์๋ก์ด View๋ฅผ ์ ๊ณตํ ๋ฟ์ด๋ค.
๋ฐ๋ผ์ ์์ ์์์ ๊ฐ์ด ์ฌ๋ผ์ด์ค ๋ ๋ฐฐ์ด์ ๊ฐ์ ์์ ํ๋ฉด ์๋ ๋ฐฐ์ด์ ๊ฐ๋ ์์ ๋๋ค.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
row_r1 = a[1, :]
row_r2 = a[1:2, :]
print(row_r1, row_r1.shape)
#[5 6 7 8] (4,)
print(row_r2, row_r2.shape)
#[[5 6 7 8]] (1, 4)
1ํ๋ง ๋ฝ์๋ด๋๋ผ๋ row_r2์ ๊ฐ์ด ๊ตฌ๊ฐ์ผ๋ก ๋ฝ์ผ๋ฉด ์ฐจ์์ด ๋ณด์กด๋๋๋ฐ ๊ทธ ์ฐจ์์ ๊ธธ์ด๊ฐ 1์ด ๋๊ณ ,
row_r1๊ณผ ๊ฐ์ด 1ํ๋ง ๋ฝ์ ๊ฒฝ์ฐ ์ฐจ์์ด ์ค์ด 2์ฐจ์์ด 1์ฐจ์์ด ๋๋ค,
shape์ ๋ณด๋ฉด ์์์๋ค, row_r1์ ๊ธธ์ด๊ฐ 4์ธ 1์ฐจ์๋ฐฐ์ด, row_r2๋ 1*4์ธ 2์ฐจ์๋ฐฐ์ด