728x90
SMALL
- numpy는 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공
- numpy에서 배열은 동일한 타입의 값들을 가진다.
- 배열의 차원을 rank 라 하고, 각 차원의 크기를 튜플로 표시하는 것을 shape
- 설치
$ pip install numpy
- 배열 만드는 함수
zeros()는 해당 배열에 모두 0을 집어 넣고
ones()는 모두 1을 집어 넣는다.
full()은 배열에 사용자가 지정한 값을 넣는데 사용하고,
eye()는 대각선으로는 1이고 나머지는 0인 2차원 배열을 생성
- 예제
import numpy as np
a = np.zeros((2,2))
print(a)
# 출력:
# [[ 0. 0.]
# [ 0. 0.]]
a = np.ones((2,3))
print(a)
# 출력:
# [[ 1. 1. 1.]
# [ 1. 1. 1.]]
a = np.full((2,3), 5)
print(a)
# 출력:
# [[5 5 5]
# [5 5 5]]
a = np.eye(3)
print(a)
# 출력:
# [[ 1. 0. 0.]
# [ 0. 1. 0.]
# [ 0. 0. 1.]]
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]]
- indexing&slicing
import numpy as np
# 아래와 같은 요소를 가지는 rank가 2이고 shape가 (3,4) 인 배열 생성
# [[1 2 3 4]]
# [5 6 7 8]
# [9 10 11 12]]
a= np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
# 배열의 중간 행에 접근하는 두 가지 방법이 있습니다.
# 정수 인덱싱과 슬라이싱을 혼합해서 사용하면 낮은 rank의 배열이 생성되지만,
# 슬라이싱만 사용하면 원본 배열과 동일한 rank의 배열이 생성됩니다.
row_r1 = a[1, :] #배열a의 두 번째 행을 rank가 1인 배열로
row_r2 = a[1:2, :] #배열a의 두 번째 행을 rank가 2인 배열로
print(row_r1,row_r1.shape) # 출력 "[5 6 7 8] (4,)"
print(row_r2,row_r2.shape) # 출력 "[[5 6 7 8] (1,4)"
col_r1 = a[:,1]
col_r2 = a[:,1:2]
print(col_r1,col_r1.shape)
print(col_r2,col_r2.shape)
- Numpy-Data type
import numpy as np
x= np.array([1,2]) #Numpy가 자료형을 추측해서 선택
print(x.dtype) # 출력 "int64"
x = np.array([1.0, 2.0])
print(x.dtype) #출력 "float64"
x = np.array([1,2], dtype = np.int64) #특정 자료형을 명시적으로 지정
print(x,dtype)
Broadcasting
- 다른 shape를 가지는 행렬끼리 연산
- 이해하기 어렵지만 알고나면 효과적
import numpy as np
# 행렬 x의 각 행에 벡터 v를 더한 뒤,
# 그 결과를 행렬 y에 저장하고자 합니다.
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])
y = np.empty_like(x) #x와 동일한 shape를 가지며 비어있는 행렬 생성
# 명시적 반복문을 통해 행렬 x의 각 행에 벡터 v를 더하는 방법 ->매우느림!!
for i in range(4):
y[i, :] = x[i,:] + v #매우 느림
y = x + v # 브로드캐스팅을 이용하여 v 를 x의 각 행에 더하기!!
# 이해 할것!
#이제 y는 다음과 같다
# [[2 2 4]]
# [5 5 7]
# [8 8 10]
# [11 11 13]
print(y)
- arrange()
numpy.arange([start, ] stop, [step, ] dtype=None)
numpy 모듈의 arange 함수는 반열린구간 [start, stop) 에서 step 의 크기만큼 일정하게
떨어져 있는 숫자들을 array 형태로 반환해 주는 함수
stop 매개변수의 값은 반드시 전달되어야 하지만 start 는 step 은 꼭 전달되지 않아도 된다.
start 값이 전달되지 않았다면 0 을 기본값으로 가지며,
step 값이 전달되지 않았다면 1 값을 기본값으로 갖게 된다.
dtype 의 경우 결과로 반환되는 array 이의 type 을 지정할 때 사용한다.
dtype 값이 주어지지 않는 경우 전달된 다른 매개 변수로부터 type 을 추론하게 된다.
>>> import numpy as np
>>> np.arange(3) array([0, 1, 2])
>>> np.arange(3.0) array([ 0., 1., 2.])
>>> np.arange(3,7) array([3, 4, 5, 6])
>>> np.arange(3,7,2) array([3, 5])
Matplotlib
- plotting 라이브러리
import numpy as np
import matplotlib.pyplot as plt
# 사인과 코사인 곡선의 x,y 좌표를 계산
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
#matplotlib를 이용해 점들을 그리기
plt.plot(x,y)
plt.show() #그래프를 나타나게 하기 위해선 plt.show() 함수를 호출해야만 합니다.
LIST
'언어 > python' 카테고리의 다른 글
(python) CSV to MySQL (0) | 2020.08.19 |
---|---|
python 반복문 (0) | 2020.07.15 |
List 자료형 (0) | 2020.07.15 |
python 자료형(문자열) (0) | 2020.07.15 |
python 자료형 (숫자형) (0) | 2020.07.15 |