Programming/Python

Python Numpy 7강 - 행렬곱, 연립방정식

상맹 2021. 10. 21. 16:49
반응형
# 브로드 캐스팅 복습

arr1 = np.array([1,2,3])
arr2 = np.array([[4,5,6],[7,8,9]])

# 스칼라 -> 원데이터 전체 변경
r1 = arr1 + [1] # +, /, *, -
print(r1)
print("="*50)

# 같은모양 -> 원데이터 전체 변경
r2 = arr1 + arr2
print(r2)
print("="*50)

print(arr1.shape)
print(arr2.shape)

# 행 혹은 열의 크기가 같고 나머지가 1일 때 -> 원데이터 전체 변경
r3 = arr1 + arr2
print(r3)

# 만약 전체를 변경하는 게 아니라 원하는 것 만 변경하려면 -> np.where을 쓰자


1. 행렬 곱

<연습1>

 

홍길동 - 공부!! - 하루일과중 효과적인 공부시간 확인 (집, 독서실)

  1. 비타 500 -> 2시간 집중 공부!! (1000)
  2. 컨디션 -> 4시간 집중 공부!!(5000)
  3. 집 -> 비타 500 (5개) , 컨디션 (2개)
  4. 독서실 -> 비타 500 (2개), 컨디션 (1개)

집 -> 18시간

독서실 -> 8시간

 

조건(1,2,3,4) 이 적기 때문에 쉽게 판단 가능 하지만, 조건이 엄청 많아질경우 판단이 어려워 진다.

행렬을 사용하면 조건이 많아도 쉽게 처리가 가능하다

행렬곱 문법 !!

  • 양끝에 숫자로 결과 행렬이 만들어지고
  • 마주하는 가운데 숫자가 같아야한다.
  • (1,2) (2,2) => (1,2)
  • (3,2) (2,1) => (3,1)

# 행렬 곱 (독서실, 집 어디에서 공부하는 것이 시간적으로 유리할까)
#         (독서실, 집 어디에서 공부하는 것이 비용적으로 유리할까)

import numpy as np

arr1 = np.array([2,4])
arr2 = np.array([[5,2],[2,1]])
arr3 = np.array([1000,5000])

print(arr1)
print(arr2)
print(arr1.shape)
print(arr2.shape)
print("="*50)

r1 = np.dot(arr1, arr2)
print(r1)
print("="*50)

r2 = np.dot(arr3, arr2)
print(r2)

 

 


<연습2>

############## 기계 작동 가능 시간
# 오전 새 기계 4시간, 중고 기계 3시간
# 오후 새 기계 5시간, 중고 기계 4시간

############## 시간당 생산능력
# 새기계 휘발유 5개 생산가능, 등유 4개 생산가능
# 중고기계 휘발유 3개 생산가능, 등유 2개 생산가능

############## 시간대별 (오전, 오후) 사용된 휘발유와 등유의 개수가 몇개인지 파악!!

arr1 = np.array([[4,3],[5,4]])
arr2 = np.array([[5,4],[3,2]])

r1 = np.dot(arr1,arr2)
print(r1)


2. 연립 방정식 해 구하기

arr2 = np.array([[5,2],[2,1]])
arr3 = np.array([1000,5000])
arr4 = np.array([18,8])

r2 = np.dot(arr3, arr2)
print(r2)
print("="*50)

# 연립방정식의 해 구하기
r3 = np.linalg.solve(arr2, arr4)
print(r3)


3. 랜덤벡터, 평균, 제곱근, 표준편차

# Numpy로 랜덤한 10개의 숫자를 입력하여 벡터를 만드시오.(1~100)
arr1 = np.random.randint(1,100,(10))
print(arr1)

# 위에서 뽑은 랜덤한 숫자의 평균을 구하시오
mean = np.mean(arr1)
print(mean)

# 위에서 뽑은 평균의 제곱근의 값을 구하시오
sqrt = np.sqrt(mean)
print(sqrt)

# [1,3,5,7] 의 표준편차를 구하시오.(함수 찾으세요! - 함수를 찾아서 했는데도 이게 뭔?)
d = np.array([1,3,5,7])
std = np.std(d)
print(std)

 

함수는 필요한 거 찾아서 그때 그때 검색해서 사용하면 된다.

반응형