[Numpy] 선형대수 패키지 (n차 행렬)

원준·2023년 5월 22일

데이터 분석 - Python

목록 보기
5/12

선형대수 패키지 (n차 행렬)

1) eye() - 단위 행렬

  • 대각 원소 1이고, 나머지는 0인 n차 정방행렬을 말한다.

    identity = np.eye(4)
    
    #array([[1., 0., 0., 0.],
    #      [0., 1., 0., 0.],
    #      [0., 0., 1., 0.],
    #      [0., 0., 0., 1.]])

2) diag() - 대각 행렬

  • 대각 성분 이외의 모든 성분이 0인 n차 정방행렬을 말한다.

    x = np.arange(9).reshape(3, -1)
    #array([[0, 1, 2],
    #      [3, 4, 5],
    #      [6, 7, 8]])
    
    
    np.diag(np.diag(x)) # diag로 대각값을 들고와 새로 만든것이다.
    #array([[0, 0, 0],
    #      [0, 4, 0],
    #      [0, 0, 8]])

3) dot(), matmul - 원소간의 곱

  • 벡터의 내적(행렬의 곱)

  • dot는 1차원에서 사용되지만, 2차원으로 사용될 경우 자동으로 matmul로 계산된다.

  • matmul은 2차원이상의 곱을 할때 사용된다.

    # dot
    a= np.arange(4).reshape(-1, 2)
    #array([[0, 1],
    #      [2, 3]])
    
    np.dot(a, a)
    #array([[ 2,  3],
    #      [ 6, 11]])
    # matmul
    
    a = np.random.randint(-3, 3, 10).reshape(2, -1)
    b = np.random.randint(0, 5, 15).reshape(5, -1)
    #a
    #array([[-3,  0,  1, -3,  1],
    #       [ 0, -1, -1,  0,  0]])
    
    #b
    #array([[3, 2, 1],
    #       [0, 4, 2],
    #       [4, 2, 0],
    #       [2, 2, 2],
    #       [1, 3, 0]]))
    
    ab = np.matmul(a,b)
    #array([[-10,  -7,  -9],
    #       [ -4,  -6,  -2]]))
    
    # 기본적으로 행렬의 곱 법칙을 따라가야한다.
    ba = np.matmul(b, a) # 행렬이 하나라도 맞지 않으니 에러
    # error
    ab = np.matmul(a, b.T) # 기존의 값들은 하나라도 맞았지만, 바꾸면서 안맞아짐
    # error
profile
공부해보자

0개의 댓글