인공지능 AI/머신러닝 Machine Learning

파이썬python numpy array flatten(), reshape(-1) 단일 리스트로 만들 때, 다중 리스트에서 리스트 모양이 다를 경우 제대로 작동하지 않는다

Tap to restart 2021. 2. 17. 00:00

이중 리스트를 단일 배열 또는 단일 리스트로 만들고 싶다.

 

flatten() 이중 리스트 안의 개수가 같은 경우

import numpy as np
data = [[1, 2], [3, 4]]
data = np.array(data).flatten()
print(data)

출력 결과

[1 2 3 4]

 

flatten() 이중 리스트 안의 개수가 다른 경우

import numpy as np
data = [[1, 2], [3]]
data = np.array(data).flatten()
print(data)

출력 결과

[list([1, 2]) list([3])]

 

위와 다른 결과인 것을 확인할 수 있다.

 

flatten() 삼중 리스트 안의 개수가 같은 경우

import numpy as np
data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]
data = np.array(data).flatten()
print(data)

출력 결과

[ 1  2  3  4  5  6  7  8  9 10 11 12]

 

개수가 다른 경우에는 당연히 잘 작동하지 않는다.

 

 

reshape(-1) 이중 리스트 안의 개수가 같은 경우

import numpy as np
data = [[1, 2], [3, 4]]
data = np.array(data).reshape(-1)
print(data)

출력 결과

[1 2 3 4]

 

잘 된다.

 

reshape(-1) 이중 리스트 안의 개수가 다른 경우

import numpy as np
data = [[1, 2], [3]]
data = np.array(data).reshape(-1)
print(data)

출력 결과

[list([1, 2]) list([3])]

역시 잘 안 된다.

 

sum을 이용: 이중 리스트

data = [[1, 2], [3]]
data = sum(data, [])
print(data)

출력 결과

[1, 2, 3]

 

sum을 이용: 3중 리스트

data = [[[1, 2], [3, 4], [1, 2], [3, 4]], [[1, 2], [3, 4], [1, 2], [3]]]
data = sum(data, [])
print(data)

출력 결과

[[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3]]

3중의 경우에는 sum을 이용해서는 원하는 결과가 나오지 않는다.

 

numpy-flatten-reshape-test.ipynb
0.01MB