일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그래프
- 알고리즘
- SQL
- javascript
- SWEA 15612번
- MySQL
- 백준 1331번
- 자바
- 명품자바
- 백준 17451번
- 백준 16918번
- Python
- java_programming
- 백준 2512번
- 그리디
- 백준 3085번
- 백준 18310번
- AWS
- react
- 깃헙
- 다이나믹 프로그래밍
- 백준 15787번
- 백준 1987
- 백준
- 다이나믹프로그래밍
- 머신러닝과 딥러닝
- 백준 1253번
- ubuntu
- HUFS 모각코 캠프
- 모각코
Archives
- Today
- Total
차곡차곡
[Python] Numpy 본문
Numpy
수치해석용 python 패키지로 데이터 분석 패키지들의 기초가 된다. (SciPy, Pandas, Matplotlib, Tensorflow, PyTorch, Keras, ...)
[행렬 생성]
- List로부터 (쉼표 없이 출력됨)
a = numpy.array([1, 2])
print(a)
>> [1 2]
- 함수 사용
a = numpy.zeros((3, 2))
print(a)
>> [[0. 0.]
[0. 0.]
[0. 0.]]
a = numpy.ones((3, 2))
print(a)
>> [[1. 1.]
[1. 1.]
[1. 1.]]
- 단위행렬 (Identity matrix)
a = numpy.identity(3)
print(a)
>> [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
- numpy.arange(시작, 끝-미포함, 간격) : range와 비슷
a = numpy.arange(10, 20, 2)
print(a)
>> [10 12 14 16 18]
- numpy.linspace(시작, 끝-포함, 등분 개수) : 각 요소들이 동일한 간격을 갖도록 생성
a = numpy.linspace(0, 5, 5)
print(a)
>> [0. 1.25 2.5 3.75 5. ]
[행렬 변형]
- numpy.reshape(행, 열) : 값이 들어있는 기존 행렬의 직사각형 모양을 변형, 1차원 배열을 다차원 배열로 바꿔준다.
* 인자 중 하나에 -1을 넣으면 입력한 행/열로만 정렬된다. 각 인수엔 약수를 넣어야 한다.
a = numpy.arange(12)
print(a)
>> [ 0 1 2 3 4 5 6 7 8 9 10 11]
a = a.reshape(2, 6)
print(a)
>> [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
a = a.reshape(-1, 4)
print(a)
>> [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
- 전치행렬
a = numpy.arange(12)
a = a.reshape(3, 4)
print(a)
>> [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
a = a.transpose()
print(a)
>> [[ 0 4 8]
[ 1 5 9]
[ 2 6 10]
[ 3 7 11]]
[행렬 연산]
- 행렬과 숫자 간 연산
a = np.arange(12)
a = a.reshape(3, 4)
print(a)
>> [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
print(a + 2)
>> [[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
print(a ** 2)
>> [[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]]
- 행렬 간 연산 : 모양이 동일한 행렬이면 각 원소끼리 연산된다.
a = numpy.array([[1, 1], [0, 1]])
b = numpy.array([[2, 1], [3, 4]])
print(a + b)
>> [[3 2]
[3 5]]
print(a - b)
>> [[-1 0]
[-3 -3]]
print(a * b)
>> [[2 1]
[0 4]]
print(a / b)
>> [[0.5 1. ]
[0. 0.25]]
- 행렬 곱셈 : a @ b / a.dot(b) / numpy.dot(a, b)
print(a @ b)
>> [[5 5]
[3 4]]
- 역행렬 (inverse matrix) : numpy 내 선형대수 패키지(linalg : linear algebra) 사용
a = numpy.array([[1, 1], [0, 1]])
print(numpy.linalg.inv(a))
>> [[ 1. -1.]
[ 0. 1.]]
- 행렬식 (determinant) : numpy 내 선형대수 패키지(linalg : linear algebra) 사용
a = numpy.array([[1, 1], [0, 1]])
print(numpy.linalg.det(a))
>> 1.0
- 대소 비교
a = numpy.arange(12)
a = a.reshape(3, 4)
print(a > 5)
>> [[False False False False]
[False False True True]
[ True True True True]]
[행렬 자르기]
- 2차원 자르기
a = numpy.arange(12)
a = a.reshape(3, 4)
print(a[1:, ::2]) #1행부터 끝행까지, 0열부터 끝열 전까지 2열씩 점프
>> [[ 4 6]
[ 8 10]]
print(a[:, 1:2]) #0행부터 끝행까지, 1열부터 2열 전까지
>> [[1]
[5]
[9]]
print(a[1, :-1:2]) #1행만, 0열부터 -1열 전까지 2열씩 점프
>> [4 6]
print(a[0:-2, ::3]) #0행부터 -2행 전까지, 0열부터 끝열 전까지 3열씩 점프
>> [[0 3]]
[실습]
다음과 같은 numpy 행렬을 만들고 A행렬을 잘라서 연두색으로 표시된 요소들만 갖도록 표현하기
import numpy as np
A = np.arange(11, 35).reshape(4, -1)
print(A)
print(A[:2, 3:])
print(A[::2])
print(A[:,4])
print(A[:,1::3])
print(A[::2, 1::2])
'2021 데이터 청년 캠퍼스 > 기초 파이썬' 카테고리의 다른 글
주소 목록이 있는 엑셀 파일에 위도 경도 추가하기 (0) | 2021.07.06 |
---|---|
Pandas (0) | 2021.07.05 |
Comments