일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Spring
- SECS
- Spring JPA
- C++
- spring boot
- 자바
- c
- 스포티파이
- spotify
- CS
- programmers
- SW Expert Academy
- regression
- SWEA
- Spotify Api
- SECS/GEM
- 비트겟
- 프로그래머스
- 회원가입
- 백준
- Computer Science
- 회귀
- Gem
- MYSQL
- 파이썬
- SECS-II
- python
- Baekjoon
- modern c++
- java
Archives
- Today
- Total
비버놀로지
[선형대수학 Numpy] Numpy 논리연산자 본문
728x90
NumPy 논리연산자
앞으로 보다 쉽게 행렬을 입력할 수 있도록 다음과 같은 방법으로 배열을 입력받겠습니다.
- 먼저 행렬의 크기를 입력받습니다. 행의 수와 열의 수를 의미하는 두 정수를 받습니다. 두 개의 숫자는 공백으로 나누어집니다.
- 그다음 한 줄에 열의 수만큼의 숫자가 입력됩니다.
- [행의 수] 만큼의 줄이 입력되고 총 [행의 수] ×\times [열의 수] 만큼의 숫자를 입력받게 됩니다.
3 5
1 2 6 3 8
11 0 -1 3 1
9 0 7 -3 4
np.transpose()
transpose() 또는 T를 이용하면 전치행렬을 구할 수 있습니다. 행렬의 (i,j)(i, j) 번째 원소를 (j,i)(j, i)번째 원소로 변환합니다.
>>> A = np.array([[1, 2, 3], [4, 5, 6]])
>>> print(A.T)
[[1 4]
[2 5]
[3 6]]
np.linalg.inv
inv()는 행렬의 역행렬(inverse)를 구할 때 사용됩니다. NumPy의 선형대수학 관련 세부 패키지 linalg를 사용하기 때문에, 조금 더 긴 명령어를 사용합니다.
>>> A = np.array([[1, 2], [3, 4]])
>>> print(np.linalg.inv(A))
np.dot
dot()은 두 행렬의 곱셈, 혹은 두 벡터의 내적(dot product)을 구할 때 사용됩니다. 이때 두 행렬의 크기 또는 shape이 맞지 않으면 오류가 발생합니다.
>>> A = np.array([[1, 2, 3], [1, 2, 1]])
>>> B = np.array([[2, 1, 3], [-1, 0, 5]])
>>> C = np.dot(A, B)
'ValueError: shapes (2,3) and (2,3) not aligned'
>>> B = B.transpose()
>>> C = np.dot(A, B)
>>> print(C)
[[13 14]
[ 7 4]]
실습
지금까지 배운 행렬 사용 방법을 모두 응용해보겠습니다.
- 앞으로 자주 사용될 get_matrix() 함수를 살펴보고 동작 방법을 숙지하세요.
- A의 전치행렬(transpose) B를 생성하세요.
- B의 역행렬을 구하여 C에 저장하세요. 역행렬을 구하는 것이 불가능하면 문자열 "not invertible"을 리턴합니다.
- matrix_tutorial() 함수의 리턴값으로 0보다 큰 C의 원소를 모두 세어 개수를 리턴하세요. sum()의 인자로 해당 조건 C > 0을 입력하면 0보다 큰 원소를 쉽게 셀 수 있습니다.
- 행렬을 자유롭게 설정하고 결괏값을 확인해보세요.
Tips!
try/except문으로 예외 처리를 할 수 있습니다. 에러가 발생할 것 같은 코드를 try안에 넣고, except안에는 에러 발생 시 실행될 동작 코드를 넣으면, 에러가 발생해도 프로그램이 멈추지 않고 별도 처리가 가능합니다.
try:
C = None
except:
return None
import numpy as np
def main():
A = get_matrix()
print(matrix_tutorial(A))
def get_matrix():
mat = []
[n, m] = [int(x) for x in input().strip().split(" ")]
for i in range(n):
row = [int(x) for x in input().strip().split(" ")]
mat.append(row)
return np.array(mat)
def matrix_tutorial(A):
# 아래 코드를 완성하세요.
B = A.transpose()
C = None
try:
C = np.linalg.inv(B)
except:
return "not invertible"
print(C)
return np.sum(C>0)
if __name__ == "__main__":
main()
728x90
'인공지능 머신러닝' 카테고리의 다른 글
[회귀분석] Loss Function (0) | 2022.11.03 |
---|---|
[회귀분석] 기울기와 절편 (0) | 2022.11.03 |
[선형대수학 Numpy] 벡터 연산으로 그림 그리기 (0) | 2022.11.03 |
[선형대수학 Numpy] Numpy 산술연산자 (0) | 2022.11.03 |
[선형대수학 Numpy] Numpy 행렬 (0) | 2022.11.03 |
Comments