我試圖從文本文件中讀取數據并取這些數據的均值,但是我得到的錯誤是無法使用靈活類型執行減少操作。我不知道為什么,有人可以幫忙。這是我的代碼。right=open('01phi.txt','r').readlines() right=str(right) a=np.asarray(right)b=np.mean(a)print b編輯:我現在正在使用此行, right=np.genfromtxt('01phi.txt') 但它會產生此錯誤,Line #10 (got 3 columns instead of 7)因為數組中的此行不那么大。使用genfromtxt導入numpy中缺少值的csv數據時,此鏈接告訴我如何忽略底線或如何填充底線,但是這兩種方法都會壓低平均值。有辦法解決這個問題嗎?
2 回答

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
right是一個字符串。np.asarray(some_string)返回帶有字符串dtype的數組。NumPy的np.mean函數在傳遞字符串dtype的數組時引發TypeError。
In [29]: np.asarray('1 2 3')
Out[29]:
array('1 2 3',
dtype='|S5')
In [31]: np.mean(a)
TypeError: cannot perform reduce with flexible type
而是使用np.genfromtxt或np.loadtxt從文本文件加載數組:
a = np.genfromtxt(filename, ...)

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
有一種方法可以將類似文件的自定義對象np.genfromtxt
傳遞給。您可以使用類似的方法來處理短行并返回全行。但是,我認為這比您在此處真正想要使用的代碼更多。我認為編寫一個預處理腳本將您的舊數據文件重寫(通過將零添加到丟失的列中)到一個可以被np.genfromtxt讀取的腳本中會更容易
添加回答
舉報
0/150
提交
取消