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
반응형
'Programming > Python' 카테고리의 다른 글
[Python] Pandas sorting (오름/내림 정렬) 하기 (0) | 2021.05.01 |
---|---|
[Python] bound / unbound method란? (feat. static method) (1) | 2021.04.29 |
[Python] How to initialize dictionary by get method (0) | 2020.11.08 |
[Python] Abstract Classes(추상클래스)의 객체 생성은 가능한가? (1) | 2020.11.06 |
[Python] 리스트(list) vs 튜플(tuple)! (0) | 2020.11.05 |
댓글