我有一個文本文件包含一個列表(#lines = 1137)的矢量(都等於大小= 1137),我試圖將此列表轉換爲1137 * 1137矩陣。我用numpy創建了一個空矩陣。但是,當我使用以下代碼讀取文件之後的問題,所述載體被視爲字符序列,而不是作爲一個載體或陣列從文本文件創建n * n矩陣包含Python列表中的列表
myMtrx = np.empty((1137,1137))
f = open("text.txt", "r")
for vector in f:
print len(vector)
arrayF.append(vector.rstrip())
我認識到,通過打印我們每個矢量的長度,其是根據位數來計算的,而不是該向量中的元素。在文本文件中的矢量看起來像
[99.25, 14.74, 26.12, 20.91, 37.14, 79.03, 17.68, 28.4, ...., 0]
所以當我打印print arrayF[0][0]
我收到[
,我需要輸出爲第一載體,它是99.25的第1個要素。
我嘗試了幾種使用numpy的方法,並將文本文件寫入CSV但沒有任何效果,請您幫助我解決此問題。您可以通過以下鏈接訪問文本文件,讓您瞭解其結構。 text.txt
當你說'for vector in f'時,'vector'變量傳遞給你的代碼不是一個向量,而是整個文件的一行(作爲一個字符串)。你想做一些類似'for line in f'的代碼,並在循環中編寫代碼將每行分割成感興趣的令牌(例如使用正則表達式和/或'str.split()')。然後確保在使用它們填充數組之前將這些標記轉換爲數字值。 – dhrumeel
感謝您的迅速響應。 vector的內容與我的文章[99.25,........ 0]中所描述的一樣,但正如你所說的,它被解析爲字符串而不是數組。但有沒有比reg-expression更簡單的方法? – Mohannad
如果行符合樣本,您可以從行中去掉sqare括號,並在逗號空格和int()中分隔出來的所有列表元素。說得通? – Dilettant