달나라 노트

Python numpy : flatten, flat (array를 1차원으로 변환, 1차원 array indexing) 본문

Python/Python numpy

Python numpy : flatten, flat (array를 1차원으로 변환, 1차원 array indexing)

CosmosProject 2021. 12. 27. 12:22
728x90
반응형

 

 

 

flatten method는 모든 차원의 array를 1차원으로 바꿔줍니다.

import numpy as np


arr_test = np.array(
    [  # 1차 array
        [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]  # 2차 array
    ]
)

arr_test_flatten = arr_test.flatten()
print(arr_test_flatten)
print(arr_test_flatten.ndim)
print(type(arr_test_flatten))


-- Result
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]
1
<class 'numpy.ndarray'>

위 예시를 보면 2차원 array가 1차원 array의 형태로 바뀌었음을 알 수 있습니다.

마치 python의 list와 비슷하죠.

 

 

 

 

import numpy as np


arr_test = np.array(
    [  # 1차 array
        [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]  # 2차 array
    ]
)

arr_test_flatten = arr_test.flatten()
print(arr_test_flatten[7])


-- Result
8

flatten된 array에서 indexing도 가능합니다.

 

 

 

 

 

 

 

flat attribute는 array를 flatten한 후에 indexing을 할 하는 것과 같은 정보를 제공합니다.

import numpy as np


arr_test = np.array(
    [  # 1차 array
        [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]  # 2차 array
    ]
)

print(arr_test[1, 2])
print(arr_test.flat[7])


-- Result
8
8

위 예시에는 2차원 array가 있습니다.

2차원 array에 있는 값들 중 8이라는 값을 추출하려고 하면 아래처럼 해야합니다.

 

arr_test[1, 2]

1차 array index = 1  -->  [6, 7, 8, 9, 10]

2차 array index = 2  -->  8

 

그러나 flat attribute를 적용한 후에는 마친 2차 array를 1차 array로 바꾼 형태에서 indexing을 할 수 있으므로 7만 입력해주면 8이라는 값을 얻을 수 있습니다.

flat은 마치 flatten method를 적용한 후의 1차 array에 indexing을 한다고 보면 더 이해하기 쉬울겁니다.

 

 

 

 

 

 

 

728x90
반응형
Comments