numpy는 계산을 위한 라이브러리로서, 다차원 배열을 처리하는데 필요한 여러 기능을 제공하는 패키지입니다. 다차원 배열을 강력하게 처리할 수 있어, 데이터 처리와 머신 러닝 등 많은 곳에서 사용하게 됩니다.
1. numpy로 바꾸기 위해서는 리스트를 np.array()로 감싸서 사용합니다.
a = np.array([1, 2, 3, 4])
print(a)
# 출력
# [1, 2, 3, 4]
print(a.shape)
# 출력
# (4, ) , 크기 나타냄
2. 2차원 배열을 형성할 수 있습니다. 아래 b행렬은 2행 3열의 행렬입니다.
b = np.array([[1,2,3],[4,5,6]])
print(b.shape)
# 출력
# (2, 3)
print(b[0][0])
# 출력
1
3. 특이한 특징을 지니는 numpy 배열을 만드는 함수들이 있습니다.
np.zeros((2,2)) # 2행 2열, 0을 가지고 있는 행렬을 만듬
np.ones((2,3)) # 2행 3열, 1을 가지고 있는 행렬을 만듬
np.full((2,3), 5) # 2행 3열, 뒤에 입력한 숫자를 가지고 있는 행렬을 만듬
np.eye(3) # 3행 3열, 대각선은 1이고 나머지는 0인 2차원 배열을 만듬
4. reshape()을 이용하여 배열을 다차원으로 변환시켜 줄 수 있습니다.
a = np.array(range(20)).reshape((4, 5))
print(a)
# 출력
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
5. numpy 슬라이싱, 각 차원별로 슬라이스 범위를 지정하여 사용합니다.
arr = np.array(range(10)).reshape((3, 3))
a = arr[0:2, 0:2]
print(a)
# 출력
# [[1 2]
# [4 5]]
a = arr[1:, 1:]
print(a)
# 출력
# [[5 6]
# [8 9]]
6. numpy 인덱싱, 각 차원별로 선택되는 배열요소의 인덱스들을 일렬로 나열하여 부분집합을 구하는 것
a = np.array(range(1, 13)).reshape((3, 4))
s = a[[0, 2], [1, 3]]
print(s)
# 출력
# [2 12]
또한, 같은 크기의 bool 타입 배열을 통한 인덱싱도 가능합니다.
a = np.array(range(1, 10).reshape((3, 3))
bool_array = np.array([
[False, True, False],
[True, False, True],
[False, True, False]
])
n = a[bool_array]
print(n)
# 출력
# [2, 4, 6, 8]
# 또 다른 방법
bool_array = (a % 2 == 0)
print(a[bool_array])
# 요약하면
n = a[ a % 2 == 0 ]
# 출력
# [2. 4, 6, 8]
7. numpy 연산, numpy를 활용할 시, 배열간의 연산을 쉽게 할 수 있습니다.
+, -, *, / 뿐만 아니라, add(), substract(), multiply(), divide()등의 함수도 사용 가능합니다.
a = np.array([1,2,3])
b = np.array([4,5,6])
c = a + b
# c = np.add(a, b)
print(c)
# 출력
# [5, 7, 9]
행렬과 행렬의 곱 연산을 위해서는 dot()함수를 사용하면 됩니다.
a = np.array(range(1, 5)).reshape((2, 2))
b = np.array(range(5, 9)).reshape((2, 2))
c = np.dot(a, b)
print(c)
# 출력
# [[19 22]
# [43 50]]
배열 간의 연산을 위한 sum(), prod() 함수가 있습니다. sum()은 각 배열의 요소를 더하는 것이고, prod()는 각 배열 요소를 곱하는 것입니다. 여기서 옵션으로 axis 값을 지정 가능하며, axis가 1이면 행끼리 연산, 0이면 열끼리 연산하는 것입니다.
a = np.array([[1,2],[3,4]])
print(np.sum(a)) # 10
print(np.sum(a, axis=0) # [4 6]
print(np.sum(a, axis=1) # [3 7]
print(np.prod(a)) # 24
8. numpy에서 파일 읽기/쓰기, savetxt()와 loadtxt()을 통해여 저장 및 불러올 수 있습니다.
# 형식
# numpy.savetxt({저장할 파일 이름}, {저장할 데이터},
# fmt={데이터 형식(소수점 몇자리까지 같은 거)}, delimiter={데이터 간 구분자})
# 예시
np.savetxt("test.txt", numbers, fmt="%d", delimiter=",")
'python' 카테고리의 다른 글
17. python find 함수(백준 10809번 python) (0) | 2021.01.16 |
---|---|
16. python 아스키 코드 변환 방법 (0) | 2021.01.16 |
14. Extra Data Structure - 5, Decimal (0) | 2021.01.13 |
13. Extra Data Structure - 4, heapq (0) | 2021.01.13 |
12. Extra Data Structure - 3, OrderedDict (0) | 2021.01.13 |
댓글