728x90
반응형
Numpy 활용하기
바로 이전 포스팅과 같이 사용하기전에 import 해주고 시작!
배열 연산
Numpy는 배열끼리의 연산을 지원한다.
언뜻 보면 규칙이 복잡하지만 잘만 사용하면 상당히 복잡한 기능도 배열끼리의 연산으로 간단히 구현가능하다.
na1 = np.array( [[1,2],[3,4]] ) # shape : (2,2)
na2 = np.array( [[1,2]] ) # shape : (1,2)
na3 = np.array( [[1],[2]]) # shape : (2,1)
print( na1 + na2 )
print( na1 + na3 )
Numpy 의 배열끼리의 연산은 같은 동일 차원(x축, y축등.. ) 길이가 같거나 또는 한쪽이 1일때 허용된다.
단 차원의 크기다 다를때는 앞의 차원은 1로 간주된다.
아래에는 서로 연산이 가능한 쉐이프의 예가 나와있다.
간단한 행렬연산 예시
(2,2) + (2,)
(2,2) + (1,2)
(2,2) + (2,1)
(3,1) + (1,2)
(1,2,3) + (1,2,1)
(1,2,3) + (1,1,3)
(1,2,3) + (1,2,3)
(1,2,3) + (2,3)
(1,2,3) + (1,3)
(1,2,3) + (3,)
이는 3차원 이상의 배열에서도 유효하다.
차원의 크기가 다를 경우 앞쪽은 1로 계산한다.
(4,3,2) + (3,1) = (4,3,2) + (1,3,1)
na1 = np.full((4,3,2),2)
na2 = np.full((1,2),2)
print( na1 + na2 )
x1,x2 = np.array([0,1,2]), np.array([[1],[2],[3],[4]])
print(x1)
print(x2)
print(x1 + x2)
구구단 행렬 만들기
a=np.arange(1,10,1)
b= np.array([[1],[2],[3],[4],[5],[6],[7],[8],[9]])
print(a)
print(b)
print(a*b)
(n,) 두개를 (n,2) 로 합치기
arr1= np.array([1,2,3,4,5,6]).reshape(6,1)
arr2 =np.array([0,10,20,30,40,50]).reshape(6,1)
print(arr1 * np.array([1,0])+arr2 * np.array([0,1]))
그래프의 2차원화
- 문제 : 다음 0부터 np.pi 까지의 sin 곡선과 같은 비율로
밝기가 변화하는 (100,100) 의 2차원 흑백이미지를 생성.
x = np.sin(np.linspace(0,np.pi,100))
# plt.plot(x)
# plt.show()
plt.imshow( x + x.reshape(100,1),cmap='gray')
컬러 그라데이션 배열
- 문제 : np.linspace 를 사용해서 다음과 같은 (100,100,3) 이미지를 갖는 배열을 생성
narr = np.zeros((100,100,3))
x = np.linspace(0,1,100)
y = x.reshape(100,1,1) * np.array([1,0,0])
plt.imshow(narr+y)
728x90
반응형
'Archive > Develop' 카테고리의 다른 글
[ C++ ] C++ 객체란? | 클래스 만들기 | 생성자 & 소멸자 | 인라인(inline) 함수 (1) | 2021.03.23 |
---|---|
[ Django ] DB 연동(makemigrations, migrate) (0) | 2021.03.22 |
Numpy 라이브러리 활용하기 (숫자연산, 수학연산, 조건연산) | numpy 사인 코사인 (0) | 2021.03.22 |
[ Oracle ] 집계함수(count,min,max,sum,avg) | 조인(Join) 종류 (0) | 2021.03.22 |
[ Django ] Django-environ 라이브러리를 활용한 SECRET_KEY 숨기기 (0) | 2021.03.21 |