행렬의 곱셈

yejichoi·2023년 8월 3일
0

알고리즘 스터디

목록 보기
86/153
post-thumbnail

행렬의 곱셈

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한사항

행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.

입출력 예

arr1arr2return
[[1, 4], [3, 2], [4, 1]][[3, 3], [3, 3]][[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]][[5, 4, 3], [2, 4, 1], [3, 1, 1]][[22, 22, 11], [36, 28, 18], [29, 20, 14]]

풀이

import numpy as np

def solution(arr1, arr2):
   mat1 = np.array(arr1)
   mat2 = np.array(arr2)
 
    
   result = np.dot(mat1, mat2) # 내적 곱 

   return result.tolist() # 리스트 변환

TIL

numpy

파이썬에서 과학적인 계산을 위한 라이브러리
NumPy는 다차원 배열과 행렬을 다루는 기능을 제공

np.dot()

배열의 내적(점곱)을 계산하는 함수

.tolist()

NumPy 배열을 Python 리스트로 변환

zip(*B)

zip() 함수는 여러 개의 이터러블을 받아서 해당 이터러블들의 원소들을 순서대로 묶어 튜플로 반환하는 내장 함수
zip(*B)를 사용하면 2차원 이터러블 B의 열과 행을 맞바꾼 결과를 얻을 수 있음
2차원 리스트를 전치시킬 수 있으며, 이는 행렬의 전치 연산과 같은 효과

B = [
  [1, 2, 3],
  [4, 5, 6],
]

# B의 열과 행을 맞바꿈 (transpose)
result = list(zip(*B))

print(result)
# 출력: [(1, 4), (2, 5), (3, 6)]

0개의 댓글