오류 값을 포함하여 측정 된 값이 포함 된 일부 열이있는 csv 파일이 있습니다. numpy genfromtxt를 사용하여 파이썬으로 모든 것을 가져오고 dtype을 사용하여 배열을 포맷하려고합니다. 이 전 형식으로 csv 파일을 가정 해 봅시다 : 나는 열 강도의 두 서브 칼럼으로 전체 파일 및 분할 값과 불확실성을 분석 할numpy dtype 및 변환기를 사용하는 하위 열에서 csv 열 분할
# Name, Time, Intensity
Sample1, 300, 1000+-5
Sample2, 300, 1500+-2
. 나는 두 dtypes 정의 :이 dtypes를 사용
import numpy as np
TypeValErr = np.dtype([("value", np.int32), ("error", np.int32)])
TypeCSV=np.dtype({"names": ["name", "time", "intensity"],
"formats": ["U32", np.int32, TypeValErr],
"titles": ["Name", "Time", "Intensity"]})
를, 내가 먼저 나 자신에 의해 단지 시험 배열을 만들 : 다음 단계에서 나에게 예상되는 출력
[('Sample3', 300, (2000, 12))]
을 제공
Intensity = np.array([(2000, 12)], dtype=TypeValErr)
CSVentry = np.array([("Sample3", 300, Intensity)], dtype=TypeCSV)
print(CSVentry)
을 이 dtype을 사용하여 CSV를 가져 오려고합니다. 출력은 다시 마지막으로
[('Sample3', 300, (1800, 7))]
하지만, 수입 자체를 예상 부여합니다
def convertToValErrArr(txt):
splitted = txt.split("+-")
return np.array([(splitted[0], splitted[1])], dtype=TypeValErr)
print(np.array([("Sample3", 300, convertToValErrArr("1800+-7"))], dtype=TypeCSV))
: [강도 열은 잘못된 형식을 가지고, 나는 올바른 형식으로 출력을 변환하는 컨버터를 사용하려면 오류가 발생합니다.
ConvertFunc = lambda x: convertToValErrArr(x)
file = np.genfromtxt("test.csv",
delimiter=",",
autostrip=True,
dtype=TypeCSV,
skip_header=1,
converters={2: lambda x: convertToValErrArr(str(x))})
그리고 여기 내 오류입니다 :
Traceback (most recent call last):
File "csvimport.py", line 28, in <module>
converters={2: lambda x: convertToValErrArr(str(x))})
File "/usr/lib/python3.6/site-packages/numpy/lib/npyio.py", line 1896, in genfromtxt
rows = np.array(data, dtype=[('', _) for _ in dtype_flat])
ValueError: size of tuple must match number of fields.
내가 실수를 볼 수 없습니다 여기 내 코드입니다. genfromtxt가 다른 방식으로 데이터를 처리합니까? 나는 누군가가 생각하기를 바랍니다. 고마워.
필드를 두 개로 나눠서 작동시키지 못하는 변환기를 테스트했습니다. 나는 그것이 불가능하다고 말하지 않을 것이지만, 그것은 컨버터의 의도 된 사용이 아니다. 하지만 왜 실패하는지, 그리고 퍼지가 있는지를보기 위해'genfromtxt'를 연구해야합니다. – hpaulj
'TypeCSV'는 4 열 파일과 함께 작동합니까? – hpaulj