亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python3中的numpy genfromtxt問題

python3中的numpy genfromtxt問題

幕布斯6054654 2021-03-09 13:13:01
我正在嘗試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中使用的正確方法?難道我做錯了什么?先感謝您!
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

我的問題的答案是使用dtypeunicode字符串(U2例如)。

感謝E.Kehler的回答,我找到了解決方案。如果在定義中使用str代替,則第二列的輸出為空:S8dtype

numpy.genfromtxt("test.csv", delimiter=",", dtype='f8,str')

輸出為:

array([(1.0, ''), (2.0, ''), (3.0, '')], dtype=[('f0', '<f16'), ('f1', '<U0')])

這表明我可以正確dtype地解決我的問題的是一個unicode字符串:

numpy.genfromtxt("test.csv", delimiter=",", dtype='f8,U2')

給出預期的輸出:

array([(1.0, 'a'), (2.0, 'b'), (3.0, 'c')], dtype=[('f0', '<f16'), ('f1', '<U2')])

有用的信息也可以在numpy數據類型doc頁面上找到。


查看完整回答
反對 回復 2021-03-24
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

在python 3中編寫

dtype =“ S8”

(或NumPy的genfromtxt中的“ S?!钡娜魏巫凅w)會產生一個字節字符串。為了避免這種情況,只獲取老式字符串,請編寫

dtype = str


查看完整回答
反對 回復 2021-03-24
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

training = np.genfromtxt('twitter_train.csv', delimiter=',', usecols=(0,1), dtype='U')

在我的情況下,第一列包含的情感值為0或1,第二列是一個字符串,由許多字符組成,表示此ex中的一條推文。 dtype ='U '從包含的位置刪除了b'。

因此,在您的情況下,它將是:data = numpy.genfromtxt(“ test.csv”,delimiter =“,”,dtype ='U')


查看完整回答
反對 回復 2021-03-24
  • 3 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號