我正在嘗試genfromtxt與Python3一起使用,以讀取包含字符串和數字的簡單csv文件。例如,類似以下內容(以下稱為“ test.csv”):1,a2,b3,c使用Python2,以下代碼可以很好地工作:import numpydata=numpy.genfromtxt("test.csv", delimiter=",", dtype=None)# Now data is something like [(1, 'a') (2, 'b') (3, 'c')]在Python3中,返回相同的代碼[(1, b'a') (2, b'b') (3, b'c')]。由于Python3讀取文件的方式不同,所以這在某種程度上是可以預期的。因此,我使用轉換器來解碼字符串:decodef = lambda x: x.decode("utf-8")data=numpy.genfromtxt("test.csv", delimiter=",", dtype="f8,S8", converters={1: decodef})這適用于Python2,但不適用于Python3(相同的[(1, b'a') (2, b'b') (3, b'c')]輸出。但是,如果在Python3中,我使用上面的代碼僅讀取一列:data=numpy.genfromtxt("test.csv", delimiter=",", usecols=(1,), dtype="S8", converters={1: decodef})輸出字符串['a' 'b' 'c']已按預期進行解碼。我也試著提供文件的輸出open與'rb'模式,在所建議的這個環節,但目前還沒有改進。為什么僅讀取一列而不讀取兩列時轉換器起作用?您能否建議我genfromtxt在Python3中使用的正確方法?難道我做錯了什么?先感謝您!
python3中的numpy genfromtxt問題
幕布斯6054654
2021-03-09 13:13:01