📌 numpy
- 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공
- numpy에서 배열은 동일한 타입의 값들을 가지며, 배열의 차원을 rank 라 하고, 각 차원의 크기를 튜플로
표시하는 것을 shape 라 함.
- 예를 들어, 행이 2이고 열이 3인 2차원 배열에서 rank는 2 이고, shape는 (2, 3)
📌 기본
import numpy as np
list1 = [1,2,3,4]
a = np.array(list1)
print("a.shape-->", a.shape) #(4,)
# 행이 2이고 열이 3인 2차원 배열
b = np.array([[1,2,3],[4,5,6]])
print("b.shape--> ", b.shape) # (2,3) 2행 3열이라는 뜻
print("b-->" , b[0,0]) # 1
📌 슬라이싱
# numpy 슬라이싱
import numpy as np
lst = [
[1,2,3],
[4,5,6],
[7,8,9]
]
arr = np.array(lst)
print("-----arr----")
print(arr)
# 슬라이스
a = arr[1:3, 0:2] # 1:3은 1행에서 2행까지 / 0:2는 0열에서 2열까지
print("-----슬라이스 arr[1:2, 0:2]----")
print(a)
# 출력:
# [[4,5]]
📌 정수인덱싱
import numpy as np
lst = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
a = np.array(lst)
print("----a-----")
print(a)
# 정수 인덱싱
# # 행범위 0~2 . 열범위 1~3 [최소-최대의 범위를 정하여 부분 집합]
s1 = a[[0,2],[1,3]] # 최소값 최대값을 알아서 도출함 # 슬라이싱은 : 로 구분했지만 정수인덱싱은 , 로 구분한다.
s2 = a[[0,1],[1,2]]
s3 = a[[1,2],[2,3]]
print("-----정수 인덱싱 a[[0,2],[1,3]]---")
print("s1 a[[0,2],[1,3]]---> %s" %(s1))
print("s2 a[[0,1],[1,2]]---> %s" %(s2))
print("s3 a[[1,2],[2,3]]---> %s" %(s3))
📌 dot
import numpy as np
lst1 = [
[1,2],
[3,4]
]
lst2 = [
[5,6],
[7,8]
]
a = np.array(lst1)
b = np.array(lst2)
# Matrix Product
c = np.dot(a,b)
print("numpy product a")
print(a)
print("numpy product b")
print(b)
print("numpy product np.dot(a,b)")
print(c)
# a = [ a11 a12
# a21 a22]
#
# b = [ b11 b12
# b21 b22]
#
# np.dot(a, b) = [ a11*b11 + a12*b21 , a11*b12 + a12*b22
# a21*b11 + a22*b21 , a21*b12 + a22*b22]
📌 axis
import numpy as np
a = np.array([[1,2],[3,4]])
print("np.array([[1,2],[3,4]])")
print(a)
s = np.sum(a)
print("numpy np.sum(a)")
print(s) # 10
# axis=0 이면, 컬럼끼리 더함
# axis=1 이면, 행끼리 더함
print("numpy np.sum(a, axis=0)")
s = np.sum(a, axis=0)
print(s) # [4 6]
print("numpy np.sum(a, axis=1)")
s = np.sum(a, axis=1)
print(s) # [3 7]
# , 각 배열 요소들을 곱
s = np.prod(a)
print("numpy np.prod(a)")
print(s) # 24 = (1*2) (3*4)