Numpy 기본사용법
Numpy 기본 사용법
Numpy란
-
행렬이나 대규모 다차원 배열을 쉽게 처리할 수 있는 파이썬의 라이브러리이다.
-
데이터를 다루는 작업을 할 때 크게 도움이 된다.
-
python의 List 보다 빠르고 다양한 기능을 갖고 있다.
배열 생성
python은 기본적으로 C언어와 java에서 사용하는 배열(array)을 지원하지 않는다.
list와 Array는 분명한 차이가 있는데 그 중 가장 큰 차이는 List는 동적 할당이며 Array는 정적 할당이라는 점이다.
이로 인해 Numpy로 배열을 만들어 사용한다면 속도 측면에서 이점을 챙길 수 있는 것이다.
리스트가 아닌 Numpy 배열을 생성하여 기존의 리스트로 불가능한 다양한 연산과 추가 기능을 이용 할 수 있다.
배열을 생성하는 방법은 다음과 같다.
import numpy as np
list1 = [1,2,3]
print(list1)
print(type(list1))
array = np.array(list1)
print(array)
print(type(array))
[1, 2, 3] <class ‘list’> [1 2 3] <class ‘numpy.ndarray’>
위 코드와 같이 array 함수에 매개 변수로 리스트를 넣어도 되며 직접 배열을 작성해도 무관하다.
배열 초기화
Numpy는 배열을 생성하기 위한 다양한 방법들을 제시한다.
그 중 기본적인 일부만 알아보자.
import numpy as np
# 0부터 3까지의 배열 생성
array1 = np.arange(4)
print(array1)
# 모든 익덱스의 값이 0인 2차원 배열 생성
array2 = np.zeros((3,4), dtype=int)
print(array2)
# 모든 인덱스의 값이 문자열 1인 2차원 배열 생성
array3 = np.ones((3,4), dtype=str)
print(array3)
# 0부터 9까지 랜덤하게 초기화 된 배열 생성
array4 = np.random.randint(0,10,(3,3))
print(array4)
출력결과
[0 1 2 3]
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]
[[‘1’ ‘1’ ‘1’ ‘1’] [‘1’ ‘1’ ‘1’ ‘1’] [‘1’ ‘1’ ‘1’ ‘1’]]
[[0 1 1] [2 1 6] [5 7 1]]
배열의 연산
numpy를 통한 배열의 연산은 기존 List의 부족한 점을 해결해 주는 아주 강력한 무기 중 하나이다.
아래 코드를 통해 배열의 연산 결과가 어떻게 나오는지 알아보자.
import numpy as np
## 리스트 덧셈
list1 = [1,2,3]
list2 = [4,5,6]
list3= list1 + list2
print(list3)
## 배열 덧셈
arr1 = np.array(list1)
arr2 = np.array(list2)
arr3 = arr1+ arr2
print(arr3)
## 배열 덧셈 2
print(arr1+10)
## 배열 나눗셈
print(arr1/arr2)
출력결과
[1, 2, 3, 4, 5, 6]
[5 7 9]
[11 12 13]
[0.25 0.4 0.5 ]
결과를 통해 알 수 있듯이 기존 리스트의 덧셈으로는 리스트를 이어 붙이는 식의 덧셈이 된 반면 배열을 이용한다면 각 값에 연산이 되기 때문에 좀 더 편하게 연산이 가능하다.
그렇다면 배열을 list 방식의 덧셈처럼 합친다면 어떻게 해야 할지 알아보자.
import numpy as np
## 배열 합치기
arr1 = np.array([1,2,3])
arr2 = np.array([1,2,3])
arr3 = np.concatenate([arr1,arr2])
print(arr3)
출력결과
[1 2 3 4 5 6]
numpy가 제공하는 concatenate 함수를 통해 list의 덧셈처럼 배열간 합치기가 가능하다.
배열 형태 바꾸기
numpy는 배열의 형태 또한 바꿀 수 있다.
import numpy as np
## 배열 형태 바꾸기
arr1 = np.array([1,2,3,4,5,6,7,8])
arr2 = arr1.reshape((2,4))
print(arr2)
## 배열 열기준으로 나누기
left,right= np.split(arr2,[2], axis=1)
print(left)
print(right)
## reshape -1사용
## -1을 사용하게 되면 해당 부분은 자동으로 맞춰지게 된다.
arr3 = arr1.reshape(-1,4)
print(arr3)
**출력 결과 **
[[1 2 3 4] [5 6 7 8]]
left 배열
[[1 2] [5 6]]
right 배열
[[3 4] [7 8]]
[[1 2 3 4] [5 6 7 8]]
배열 인덱싱과 슬라이싱
numpy 배열에 python의 강력한 무기인 슬라이싱 또한 사용할 수 있다.
import numpy as np
## 배열 인덱싱
arr1 = np.array([[1,2,3,4],[5,6,7,8]])
print(arr1[0])
##2차원 배열 슬라이싱
print(arr1[1][0:4:2])
print(arr1[0:2,0:2])
**출력 결과 **
[1 2 3 4] [5 7] [[1 2] [5 6]]
배열 정렬
sort 함수를 통해 배열을 순서대로 정렬 할 수 있다.
import numpy as np
## 배열 정렬
arr1 = np.random.randint(0,100,9)
print(arr1)
arr2 = np.sort(arr1)
print(arr2)
arr3 = np.sort(arr1)[::-1]
print(arr3)
출력 결과
[78 32 57 85 20 23 76 46 32]
[20 23 32 32 46 57 76 78 85]
[85 78 76 57 46 32 32 23 20]
댓글남기기