본문 바로가기
Python/NumPy

genfromtxt을 통한 배열(array) 생성 기초 - NumPy(4)

by 콩돌 2019. 2. 2.
반응형

참고 자료

https://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html



파이썬 버전 3.7 기준

NumPy 버전 1.15 기준


본 포스팅에서 다루는 범위는 다음과 같다.

genfromtxt 등.



파일으로부터의 배열(array)의 생성(1)


앞 포스팅에서 배열을 생성하는 2가지 방법을 다루었는데 본 포스팅에서는 디스크에서 불러와서 배열을 작성하는 방법을 다루고자 한다.
genfromtxt의 상세한 기능 설명은 여기를 참고한다.



NumPy의 genfromtxt 함수

  ○ NumPy에서 제공하는 genfromtxt() 함수는 간략하게 보면은 2개의 루프로 구성되어있다.

    ▷ 첫 번째 루트는 파일 안에 string 시퀀스의 각 줄을 변환한다.

    ▷ 두 번째 루트는 각 string을 적절한 데이터 타입으로 변환한다.

    ▷ 이런 방법은 싱글루프에 비해 속도는 느리지만 유연성을 가질 수 있게 한다.

    ▷ 특히 loadtxt처럼 빠르지만 단순한 함수로는 인식할 수 없는 누락된 데이터도 인식할 수 있게한다.


genfromtxt 함수의 입력 요소

  ○ genfromtxt의 형식이 다음과 같이 있다.

    ▷ fname: 입력받는 파일의 경로와 이름을 명시한다. 파이썬 기초에서 다뤘던 open함수에서와 동일하게 입력하면 된다.

    ▷ dtype: 반환하는 배열의 데이터 타입을 정의한다.

  ○ 위에 설명한 두개의 요소를 제외하고 각 입력 요소에 대한 설명은 형식 다음 포스팅에서 설명한도록 한다.


genfromtxt 형식)

genfromtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)



데이터 타입의 선택 dtype

  ○ dtype 독립변수를 통해 데이터 타입을 설정할 수 있다.

    ▷ 데이터 타입의 기본값은 float이다.

  ○ 데이터 타입을 하나만 입력할 경우 배열안에 모든 요소는 같은 데이터 타입으로 입력된다.

  ○ None을 입력할 경우 반복적인 탐색을 통해 적절한 타입을 선정한다. 

    ▷ 먼저 논리형(boolean)으로 바뀔 수 있는지 확인하며, 

    ▷ 그 다음 int, float, 복소수, 문자열순으로 바꿀 수 있는지 탐색을 하여,

    ▷ 적절한 자료형을 선정하여 입력한다.

    ▷ 이 방식은 코드의 속도를 상당히 느리게 하므로 사용에 주의를 요한다.

  ○ 하나의 배열에 각 열마다 다른 데이터 타입을 입력하고자 한다면 데이터 타입의 시퀀스를 입력하면 된다.

    ▷ 튜플을 이용한 방법: dtype = (int, float, float)

    ▷ 콤마와 약어를 이용한 방법: dtype = "i4, f8, |U3"

    ▷ names 변수와의 조합(name, type): dtype = [('a', int), ('b', float)]  

Shortcut functions

genfromtxt의 기본값을 다르게 적용하여 특정상황에서 쓰기 쉬운 함수들이 아래와 같이 제공된다.


ndfromtxt

  ○ usemask=False가 항상 적용되어 있다.

  ○ 따라서 출력값이 항상 기본 numpy.ndarray이다.


mafromtxt

  ○ usemask=True가 항상 적용되어 있다.

  ○ 따라서 항상 MaskedArray가 출력된다.


recfromtxt

  ○ 기본 numpy.recarray(usemask=False일 경우)를 반환하거나, MaskedRecord 배열(usemask=True일 경우)을 반환한다.

  ○ 기본값으로 dtype=None으로 설정되어 있으므로 자동으로 적절한 데이터 타입으로 전환해서 출력한다.


recfromcsv

  ○ recfromtxt와 동일하나, delimiter=","로 기본값이 설정되어 있는 것이 다르다.

반응형

댓글