본문 바로가기
Programming/Python

[Python] How to flatten a matrix (행렬을 1차원 배열로 전환하기)

by a voyager 2020. 11. 9.
728x90
반응형
728x90

[Python] How to flatten a matrix (행렬을 1차원 배열로 전환하기)

행렬을 다룰때 어떤 목적에 의해서 1차원 배열로 전환해야 할 때가 있습니다. 대표적인 경우는 머신러닝에서 이미지 분석시 이미지의 2차원 밝기 행렬을 1차원으로 변환하여 네트워크게 입력하게 됩니다. 이 변환은 어려운 것은 아니지만 몇가지 방법이 있어 정리해 보았습니다. 새로운 방법이 나오면 계속 추가할 예정입니다.

 

한가지 기억해야 할 점은 열을 이어 붙이는 방식으로 변환이 이루어진다는 것이고, 변환된 1차원 배열의 길이는 column*row가 됩니다. 

 

방법 1. 

mat = [[1,2,3],[4,5,6],[7,8,9]]
arr =[] 
for i in range(len(mat)):
    for j in range(len(mat[0])):
        arr.append(mat[i][j])
print(arr)

 

방법 2. 

arr = [x for y in mat for x in y]
print(arr)

 

방법 3.

가장 쉬운 방법으로 numpy의 reshape을 이용한다. 

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

row,col = mat.shape
mat = np.reshape(mat, (1,row*col))

 

결과는 모두 [1,2,3,4,5,6,7,8,9] 이다. 

 

728x90
반응형

댓글