ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ ์ข
๋ฅ
์์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ ํ๋์ ๊ด๋ จ๋ ์ฐ์ฐ์ด ์ ์๋์๊ณ ,
n-์ฐจ์ array๋ matrix์ ๋ํ ์ ์ฉํ ๊ธฐ๋ฅ๋ค
๋ฐ์ดํฐ ๋ถ์์ ํจ๊ณผ์ ์ธ ์๋ฃํ์ ์ ๊ณตํด์ค๋ค.
import numpy as np
a = np.arange(1,11, 2) #์ด๋ฐ ์์ผ๋ก ๋ฒ์๋ฅผ ์ ํด์ ์ ์ธํ ์ ์๊ณ
a1D = np.array([7, 2, 9, 10]) #์ด๋ฐ ์์ผ๋ก ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ numpy array๋ก ๋ง๋ค ์ ์๋ค.
#์ฌ๋ฌ๊ฐ์ง ์์ฑ ๋ฐฉ๋ฒ
p = np.zeros((3,3)) # 3x3 ํ๋ ฌ์ ๊ฐ์ด 0์ผ๋ก ์ ์ธ
q = np.ones((2,2)) # 2x2 ํ๋ ฌ์ ๊ฐ์ด 1๋ก ์ ์ธ
r = np.full((2,2), 4) # 2x2, ๊ฐ์ ์ ๋ถ 4๋ก ์ฑ์ด๋ค.
s = np.eye(4) # ํญ๋ฑ ํ๋ ฌ ๋ง๋ค๊ธฐ, 1์ด 4๊ฐ -> 4x4 ํ๋ ฌ
t = np.random.random((3,3)) #๋๋ค์ผ๋ก ๋ง๋ ์๋ฅผ ๋๋ค์ผ๋ก 3x3ํ๋ ฌ
์ด๋ฐ ์์ผ๋ก ๋ค์ํ ์ ์ธ์ด ๊ฐ๋ฅ
์ด ์ธ์ ๋ชจ์์ด ์ด๋ค์ง๋ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
a1D = np.array([7, 2, 9, 10])
print(a1D.shape, "\n")
a2D = np.array([[5.2, 3.0, 4.5], [9.1, 0.1, 0.3]])
print(a2D.shape, "\n")
a3D = np.array([[[1, 2], [4, 3], [7, 4]], [[2, 0], [9, 0], [7, 5]], [[1, 0], [3, 0], [0, 2]], [[9, 0], [6, 0], [9, 8]]])
print(a3D.shape, "\n")
shape ํจ์๋ก ํ ์ด์ ๊ฐ์ด 2๊ฐ์ฉ ๋ค์ด๊ฐ ๊ฒ๋ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
import numpy as np
a2D = np.array([[5.2, 3.0, 4.5], [9.1, 0.1, 0.3]])
print(a2D, "\n")
print(a2D[:, 2], "\n") # get specific column
print(a2D[1, :], "\n") # get specific row
print("\n")
ํน์ ํ๊ณผ ํน์ ์ด์ ๊ฐ์ ธ์ค๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
Numpy arrays์ ์ํ๋ element๋ ๋ชจ๋ ๊ฐ์ ํ์
์ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
class 'numpy.ndarray'
๋ฐ์ดํฐ ํ์ ํ์ธ ๋ฐ ์ง์
var1=np.arange(1,11, dtype='f')
#๊ธฐ์กด int ์๋ค๋ฉด float์ผ๋ก ๋ณ๊ฒฝ
arr = arr.astype(float)
#๊ฐ์ ๋งฅ๋ฝ
arr = np.arange(1, 10)
print(arr, "\n")
list1 = arr.tolist()
print(list1)
#list๋ก ๋ณํ array๋ฅผ
ํ๋ ฌ ํํ ๋ณ๊ฒฝ -> reshape๋ฅผ ์ฌ์ฉ
import numpy as np
arr = np.arange(12)
print(arr, "\n")
arr_rs = arr.reshape(3, 4) = 3ํ 4์ด
print(arr_rs, "\n")
arr_rs = arr.reshape(4, 3) = 4ํ 3์ด
print(arr_rs)
reshape ๋ฉ์๋๋ฅผ ์ธ ๋ ์ฃผ์ํด์ผํ ์ ์, ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๊ฐ์, ํฌ๊ธฐ์ ๋ง๊ฒ ๋ฐ๋์ด์ผ ํ๋ค. ๋ฒ์๋ฅผ ๋์ด๊ฐ๋ฉด ValueError๊ฐ ์ผ์ด๋จ
import numpy as np
arr = np.arange(12)
print(arr, "\n")
# resize: 3 x 4 # resize ํ์ ๊ฒฝ์ฐ
resized_arr = np.resize(arr, (3,4))
print(resized_arr, "\n")
# reshape: 3 x 4 # reshape ํ์ ๊ฒฝ์ฐ
arr_rs = arr.reshape(3, 4)
print(arr_rs, "\n")
# resize: 5 x 3 # ํฌ๊ธฐ ํ์ฅ ์
resized_arr = np.resize(arr, (5,3))
print(resized_arr, "\n")
# resize: 5 x 2 # ๋ฐ์ดํฐ ์ ์ค
resized_arr = np.resize(arr, (5,2))
print(resized_arr, "\n")
์๋ฌ๊ฐ ์ผ์ด๋์ง ์๊ธฐ ํด์ , resize๋ฅผ ์ฐ๋ฉด ๋๋ค.
resize : ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝ, ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ผ ์ ์์
ํฌ๊ธฐ ์กฐ์ ์ค ๋ฐ์ดํฐ์ ์ ์ค ๋ฐ์ ๊ฐ๋ฅ
arr_rs = arr.reshape(2, -1)
print(arr_rs, "\n")
arr_rs = arr.reshape(4, -1)
print(arr_rs, "\n")
arr_rs = arr.reshape(-1, 6)
print(arr_rs, "\n")
flatten() : n์ฐจ์์ ๋ฐฐ์ด์ 1์ฐจ์์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค๋ค.
# Create an array: 3 x 3
arr = np.arange(1,10).reshape(3,3)
print(arr, "\n")
# flatten the array
print(arr.flatten(), "\n")
# flatten the array
print(arr.reshape(-1), "\n")
๋ฐฐ์ด ๋ณํฉ
tack() ์ข
๋ฅ ๋ฉ์๋๋ฅผ ์ฐ๋ฉด, arr1,arr2 ํฉ์ณ์ค ์ด๋ป๊ฒ ๋ง์ถ๊ฒ์ธ๊ฐ?
hstack,vstack,dstack ์ array size ๊ฐ์์ผํจ
hstack, vstack์ ๋ฐฐ์ด๋ค์ shape์ด ์ ๋ถ ๋์ผํด์ผํ๋ค.
hstack() : ๋ฐฐ์ด์ ์์๋๋ก ์ํ์ ์ผ๋ก ๋ง์ถ๋ค.(column wise)
๋์ : concatenate((arr1,arr2), axis = 1) axis = 1 -> ํ์ผ๋ก
vstack() : ๋ฐฐ์ด์ ์์๋๋ก ์์ง์ผ๋ก ๋ง์ถ๋ค. (row wise)
๋์: concatenate((arr1,arr2) axis = 0) axis = 0 -> ์ด์ผ๋ก
dstack() : ํ๋์ ์ด์ 2๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ฒ 1ํ์ [1 13]
๋ฐฐ์ด ๋๋๊ธฐ
array๊ฐ ๊ฐ์ ์ฌ์ด์ฆ๋ก ์ฃผ์ด์ก์ ๋, ์ํ์ ์ผ๋ก ํน์ ์์ง์ ์ผ๋ก ๋๋ ์ ์๋ค.
hsplit() : axis = 1 : ํ ํ์ ๊ธฐ์ค์ผ๋ก ๋๋
vsplit() : axis = 0 : ํ ์ด์ ๊ธฐ์ค์ผ๋ก ๋๋๋ค.
split -> axis ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋๋
Copy vs view
view๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ค. shallow copy
copy๋ ๋ค๋ฅธ ์์น์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. deep copy
๋ฐฐ์ด์ ์์ ํ๋ค๋ฉด view์ ์ํฅ์ด ๋ฏธ์น๋ค.
view๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ : copy๋ ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ๊ณ
view๋ณด๋ค ๋๋ฆผ
arr.view()
arr.copy()
๋ฆฌ์คํธ์ฒ๋ผ numpy array๋ sclicing์ ํ ์ ์์
์์ ์ธ๋ฑ์ฑ ๋ํ ์ง์ํ๋ค.
๋น๊ต ์ธ๋ฑ์ฑ
์ฐธ์ธ์ง ๊ฑฐ์ง์ด์ง ๋ฆฌํด๊ฐ์ ๋ฐ๋ผ ํํ์ด ๋๋ค.
if๋ฌธ๊ณผ ์ ์ฌ
import numpy as np
arr = np.arange(21,41,2)
print(arr[arr>30])
#์ด๋ฌ๋ฉด arr>30ใ
๋ค ํฐ ์ธ๋ฑ์ค๋ง ์ถ๋ ฅ๋
fancy indexing
์ ์ ๋ฐฐ์ด์ indexer๋ก ์ฌ์ฉํด์ ๋ค์ฐจ์ ๋ฐฐ์ด๋ก๋ถํฐ indexing
# select 2nd and 3rd row
indices = [1, 2]
print(arr[indices, :], "\n")
# select 1st and 2nd col
indices = [0, 1]
print(arr[:, indices], "\n")
list๋ ๋ฒกํฐ ๋ผ๋ฆฌ ์ฐ์ฐ ํ๋์ ๋ฐฐ์ด๋ก ํฉ์ณ์ง๋ ๊ฒ, ์์ ๋ํ๊ธฐ๊ฐ ์๋
์ ์ง์ํ์ง ์์
Broadcasting Arrays
numpy๋ ๋น ๋ฅธ ๋ฒกํฐ ์ฐ์ฐ์ ์ ๊ณตํ๋ค