Numpy 시작하기
import numpy
def matrix_tutorial():
# 3×4 의 크기를 가진 2차원 배열 선언
A = numpy.array([[1,4,5,8],
[2,1,7,3],
[5,4,5,9]])
return A
print(matrix_tutorial())
행렬변환
import numpy
def matrix_tutorial():
A = numpy.array([[1,4,5,8], [2,1,7,3], [5,4,5,9]])
# 1 A의 shape을 (3, 4)에서 (6, 2)로 변환
B = A.reshape((6,2))
# 2 B 밑에 행렬추가
B = numpy.concatenate((B,[[2,2],[5,3]]), axis = 0)
# 3 길이가 늘어난 B를 세로로 두 개로 쪼개고, 위-아래 순서대로 저장
C = numpy.split(B, 2, axis = 0)[0]
D = numpy.split(B, 2, axis = 0)[1]
# 4 C와 D를 가로로 붙여 E생성
E = numpy.concatenate((C,D), axis=1)
# 5
return E
print(matrix_tutorial())
기초통계처리
import numpy
def matrix_tutorial():
A = numpy.array([[1,4,5,8], [2,1,7,3], [5,4,5,9]])
B = A.reshape((6, 2))
B = numpy.concatenate((B, numpy.array([[2, 2], [5, 3]])), axis = 0)
(C, D) = numpy.split(B, 2, axis = 0)
E = numpy.concatenate((C, D), axis = 1)
# 1 E를 normalize(표준화)해 E안의 모든 원소 합이 1이되도록 함
E = E / numpy.sum(E)
# 2 E의 분산
variance = numpy.var(E)
return variance
print(matrix_tutorial())
행렬데이터 입력 및 출력
import numpy
def matrix_tutorial(A):
# 2 A의 전치행렬 (transpose) B 를 생성
B = A.transpose()
try:
#3 - 1 B의 역행렬을 구하여 C로 저장
C = numpy.linalg.inv(B)
except:
#3 - 2 역행렬을 구하는 것이 불가능하다면 not invertible 을 리턴
return "not invertible"
# 4 C 안에 들어있는 0보다 큰 원소 (positive) 들의 개수를 리턴합니다.
return numpy.sum(C > 0)
def get_matrix():
# 텍스트 입력을 통해 행렬을 입력받아 A로 저장
mat = [] # define mat variable
first_line = input().strip() # receive first line
first_line_splitted = first_line.split(" ") # split line by space " "
n = int(first_line_splitted[0]) # convert to integer
m = int(first_line_splitted[1]) # convert to integer
for i in range(n):
line = input().strip() # receive each line ...
row = line.split(" ") # ... and split
for j in range(m):
row[j] = int(row[j]) # convert to integer
mat.append(row)
return numpy.array(mat)
if __name__ == "__main__":
A = get_matrix()
print(matrix_tutorial(A))
선형회귀법: X,Y 입력받기
import numpy
def main():
(N, X, Y) = read_data()
print(N)
print(X)
print(Y)
def read_data():
#입력 출력
#3 3
#1 5.1 [1.0, 1.7, 3.0]
#1.7 8 [5.1, 8.0, 10.4]
#3 10.4
N = int(input())
X = []
Y = []
for i in range(N) :
line = input().strip().split(" ")
X.append(float(line[0]))
Y.append(float(line[1]))
return (N, X, Y)
if __name__ == "__main__":
main()