Appia의 IT세상

파이썬[Python] numpy array를 list로 numpy dtype을 python기본 타입으로 변경하기 본문

Python/Python Numpy

파이썬[Python] numpy array를 list로 numpy dtype을 python기본 타입으로 변경하기

Appia 2020. 3. 11. 07:39
반응형

이번 포스팅에서는 numpy의 데이터 타입을 python에서 기본 제공하는 타입으로 변경하는 방법에 대해서 살펴보고자 합니다. 그러면서, ndarray를 list로 간단히 바꾸는 법도 다루어 보겠습니다.

 

numpy array(ndarray)를 list로 변환하기 

최근에는 계속 numpy 위주로 사용을 많이 하고 있는데, 종종 의도치 않게 Numpy 사용 못하는 경우가 발생합니다. (저의 의도와는 상관없이 파이썬 기본 모듈만 사용하고자 하는 사람이 있어서…) 그러면서 자연스럽게 ndarray를 리스트로 변경하는 방법에 대해서 알게 되었습니다. 간단히 tolist()함수를 이용하는 것입니다. 그럼 다음과 같이 간단하게 ㅜdarray list로 변경하는 예제를 살펴보겠습니다. 

 

import numpy as np
 
= np.array([12])
 
print(a.tolist())
 
= np.array([[12], [34]])
 
print(list(a))
 
print(a.tolist())
cs

 

위의 결과는 다음과 같이 나옵니다.

[12]
 
[array([12]), array([34])]
 
[[12], [34]]
cs

 

위의 보이는 바와 같이 np.array로 생성된 함수를 tolist()로 간단하게 변경이 가능했습니다. 이때 주의점은 두 번째 열에서 보이는 바와 같이 list()함수를 사용하면 안됩니다. 

 

 

 와중에 가장  문제점이 바로 ndarray 생성하면서 같이 입력한 데이터 타입입니다.

그럼 데이터 타입이 입력되었을 경우, 다음 보이는 부분과 같이 변환이 어떻게 있을까요?

 

numpy.float32 -> "python float"

numpy.float64 -> "python float"

numpy.uint32  -> "python int"

numpy.int16   -> "python int"

 

여기에는 간단한 방법 부터 다양한 방법들 까지 존재하는 같습니다. 그래서 간단한 방법부터 살펴보겠습니다.

 

item() 방식 활용한 방법

간단한 함수 하나로 numpy data type(dtype)을 파이썬 기본 데이터 타입으로 변경이 가능합니다. 그 함수는 바로 item()입니다. 그럼 다음 예제를 한번 살펴보겠습니다.

import numpy as np
 
print(type(np.float32(0).item()))
 
print(type(np.uint32(0).item()))
cs

위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 

<class 'float'> 
 
<class 'int'>
cs

 

함수를 만들어서 다음과 같이 한번 꾸며보도록 하겠습니다. 

def conversion_np_to_py(dtype=None, ndarr=None):
 
    if dtype is None and ndarr is None:
 
        raise ValueError("Input not enough")
 
    if dtype is None:
        dtype = ndarr.dtype
 
    targetentry = np.empty([1], dtype=dtype).astype(object)
 
    return type(targetentry[0])
 
import numpy as np
 
print(conversion_np_to_py(ndarr=np.array([1.,2.,3.])))
 
print(conversion_np_to_py(np.float32))
cs

그럼 다음과 같은 결과가 나옵니다. 

<class 'float'> 
 
<class 'float'>
cs

위의 함수는 최초의 입력된 데이터 타입을 기반으로 새로운 배열을 하나 생성하고, 이를 토대로 astype을 통해서 반환해줍니다. 하지만 이 부분을 type()함수를 이용해서 기본 형태로 바꿀 수 있습니다. 아마 이 부분을 그냥 한번 이유 없이 따라 적으면서 이해해보시는 것이 더 좋을 수 있다고 생각합니다. 

 

오늘은 numpy array를 list로 numpy dtype을 python기본 타입으로 변경하기 라는 주제로 다음과 같이 살펴봤습니다. 실제 많은 부분에서 array를 list로 변경하는 것을 매우 많이 사용됩니다. (dtype 변경은 그닥...) 혹시 궁금하시거나 문의 사하이 있으시면 언제든지 댓글 및 방명록에 글 부탁드립니다. 

반응형
Comments