2017-12-29 5 views
0
>>> from io import StringIO 
>>> import numpy as np 
>>> s = StringIO("1,1.3,abcde") 
>>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'), 
... ('mystring','S5')], delimiter=",") 
>>> data 
array((1, 1.3, 'abcde'), 
     dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '|S5')]) 

제 질문은 dtype 인수와 관련이 있습니다. dtype="i8,f8,|S5"이 무엇을 의미하는지 이해할 수 없습니다. 그걸 만들 수 있습니다 은 정수입니다, f은 float이고 s은 문자열이지만 i8에서 8은 무엇입니까? 처음에는 바이트로 이해했지만 어떻게하면 가능할까요? 나는 DTYPE 우리가 CSV 파일에서 읽을 수 있도록 데이터 형식을 지정하는 데 도움이되지만 다른 사람이 데이터 유형numpy.genfromtxt의 dtype 인수

+0

[문서] (https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.dtypes.html)을 읽으십시오. – excaza

+0

"i8, f8, | S5"는 '데이터'디스플레이에 표시되는 전체 dtype의 짧은 손입니다. ' hpaulj

답변

1
i8에서

8 또는 f8에 대한 몇 가지 통찰력을 줄 수있는 바이트 수 있음을 이해합니다. 같은 것을 표현하는 몇 가지 다른 방법이 있습니다 datatype in numpy. np.genfromtxt에서 볼 수있는 문자열은 압축 된 형식입니다. < 또는 > 기호 앞에는 작은 또는 큰 엔디안 (documentation 참조), float/double의 경우 , 또는 float/double의 경우 f, 바이트 수를 의미합니다.

더 이상 데이터 타입 이름은 i8int64 것을 의미 대신 바이트의 비트 크기 을 가지고 f4float32 등이다. 예 :

>>> np.dtype('i8') 
dtype('int64') 
>>> np.dtype('f4') 
dtype('float32') 

기본적으로 이들은 모두 리틀 엔디안입니다. 당신이 빅 엔디안을 원하는 경우에, 지금까지의 내가 아는 한, np.dtype은 긴 형식을 반환하지 않습니다

>>> np.dtype('>c16') 
dtype('>c16') 

문자열은 특별한 데이터 타입, 그리고 숫자는 문자열의 최대 문자 수를 의미한다. 자세한 내용은 this question을 참조하십시오.

관련 문제