참고 자료
https://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
파이썬 버전 3.7 기준
NumPy 버전 1.15 기준
본 포스팅에서 다루는 범위는 다음과 같다.
genfromtxt 등.
파일으로부터의 배열(array)의 생성(1)
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"
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=","로 기본값이 설정되어 있는 것이 다르다.
'Python > NumPy' 카테고리의 다른 글
NumPy(넘파이)에서의 indexing(인덱싱) - NumPy(6) (0) | 2019.02.08 |
---|---|
genfromtxt을 통한 배열(array) 생성 상세 - NumPy(5) (0) | 2019.02.03 |
넘파이 함수를 이용한 배열(array)의 생성 - NumPy(3) (0) | 2019.01.16 |
NumPy의 데이터 타입(자료형), 관련된 함수 - NumPy(2) (0) | 2019.01.15 |
넘파이(NumPy) 개요 - NumPy(1) (0) | 2019.01.13 |
댓글