반응형
python numpy.savetxt를 사용하여 ASCII 파일에 문자열과 부동 숫자를 쓰는 방법은 무엇입니까?
다음과 같이 문자열과 부동 숫자를 모두 포함하는 목록이 있습니다.
import numpy as num
NAMES = num.array(['NAME_1', 'NAME_2', 'NAME_3'])
FLOATS = num.array([ 0.5 , 0.2 , 0.3 ])
DAT = num.column_stack((NAMES, FLOATS))
이 두 목록을 함께 쌓아 열 형태로 텍스트 파일에 쓰고 싶습니다. 따라서 가능한 경우 numpy.savetxt 를 사용 하여이를 수행 하고 싶습니다 .
num.savetxt('test.txt', DAT, delimiter=" ")
이렇게하면 다음 오류가 발생합니다.
>>> num.savetxt('test.txt', DAT, delimiter=" ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/numpy-1.8.0.dev_9597b1f_20120920-py2.7-macosx-10.8-x86_64.egg/numpy/lib/npyio.py", line 1047, in savetxt
fh.write(asbytes(format % tuple(row) + newline))
TypeError: float argument required, not numpy.string_
이상적인 출력 파일은 다음과 같습니다.
NAME_1 0.5
NAME_2 0.2
NAME_3 0.3
csv 사용을 피하면서 문자열과 부동 숫자를 텍스트 파일에 어떻게 쓸 수 있습니까 (다른 사람이 읽을 수있는 경우 만들고 싶습니다)? numpy.savetxt 를 사용하는 대신 이것을 수행하는 다른 방법이 있습니까?
fmt
에서 데이터 의 형식 ( ) 을 지정해야합니다 ( savetxt
이 경우 문자열 ( %s
)).
num.savetxt('test.txt', DAT, delimiter=" ", fmt="%s")
기본 형식은 부동 소수점입니다. 이것이 문자열 대신 부동 소수점을 예상하는 이유이며 오류 메시지를 설명합니다.
현재 받아 들여지는 대답은 실제로 문자열과 부동 숫자를 모두 포함하는 목록을 저장하는 방법을 묻는 질문을 해결하지 않습니다. 완전성을 위해 @joris 주석에 제공된 링크를 약간 수정하여 완전히 작동하는 예제를 제공합니다.
import numpy as np
names = np.array(['NAME_1', 'NAME_2', 'NAME_3'])
floats = np.array([ 0.1234 , 0.5678 , 0.9123 ])
ab = np.zeros(names.size, dtype=[('var1', 'U6'), ('var2', float)])
ab['var1'] = names
ab['var2'] = floats
np.savetxt('test.txt', ab, fmt="%10s %10.3f")
업데이트 : 이 예제는 또한 바이트 문자열 대신 구조화 된 배열을 만들 때 'U6'
유니 코드 문자열 dtype 을 사용하여 Python 3에서 제대로 작동 합니다. 후자의 dtype은 Python 2.7에서 작동하지만 Python 3에서 와 같이 문자열을 작성 합니다.ab
'S6'
b'NAME_1'
반응형
'program tip' 카테고리의 다른 글
파이썬에서 globals ()에 대한 이유? (0) | 2020.11.27 |
---|---|
JSON 키 이름을 바꾸는 방법 (0) | 2020.11.27 |
python numpy.savetxt를 사용하여 ASCII 파일에 문자열과 부동 숫자를 쓰는 방법은 무엇입니까? (0) | 2020.11.27 |
Full, Para 및 Hardware Assisted Virtualization의 차이점은 무엇입니까? (0) | 2020.11.27 |
Sublime Text 3에서 TypeScript를 지원하는 방법은 무엇입니까? (0) | 2020.11.27 |