2014-09-19 40 views
1

大家好:我是python的新手,這個問題可能很直接。 我的詳細信息的問題(在我的任務的步驟寫)如下:如何將文件中的浮點數讀入列表

  1. 我需要高斯分佈,這是很容易下產生10個隨機二維點:

    Testing = np.random.multivariate_normal(mean, cov, 10) 
    

平均而言,cov已經被定義。

  • 我需要上述值存儲到一個txt文件,用於以後的測試,這也是完成:

    with open("Testing.txt", "w") as f: 
        f.write(str(Testing)) 
    
  • 在步驟3中,我需要閱讀步驟1中創建的所有10個點中存儲的第2步到一個新的名單,做計算,我寫道:

    with open('Testing.txt') as f: 
        Data = f.read() 
    

    注意到這裏的代碼上面兩行被寫入從不同的獨立的腳本步驟1的腳本2.

  • 步驟3本身似乎確定,因爲如果我測試

    print(Data) 
    

    它會在終端打印出相同格式的TXT文件中的值和格式,問題是該數據結構從似乎在步驟1例如創建的測試數據結構不同,如果在步驟1中,我添加一個附加行

    plt.scatter(Testing[:,0],Testing[:,1],c='yellow') 
    

    它將繪製10分我。但是,如果我在第3步

    plt.scatter(Data[:,0],Data[:,1],c='yellow') 
    

    本的劇本寫同樣的命令將是一個錯誤「類型錯誤:字符串索引必須是整數,而不是元組」。顯然,Data和Testing的結構是不同的。任何人都可以幫助我呢?謝謝!

    +2

    '數據'只是一個常規的'str',而花哨的'[:,0]'索引語法是用於例如'np.array'對象。您需要將傳入的數據解析爲更有用的形式,或者使用'numpy'''fromfile''和'tofile'使自己的生活更輕鬆。 – jonrsharpe 2014-09-19 07:53:31

    +0

    @jonrsharpe是的,我明白這一點。我可以告訴寫入到txt文件中的值實際上是字符串,因爲str(Testing)命令,當然,當我讀回它們時,它們仍然是字符串。我只是很困惑如何將數據中的字符串轉換回花哨的形式。 – DemonSu 2014-09-19 07:58:04

    +0

    嗯,我不知道爲什麼你預期在將一個對象的字符串表示形式轉儲到文件並讀回該字符串後,可以將該字符串當作對象來處理,但是如果您搜索我提到的函數,那麼有更好的方法。 – jonrsharpe 2014-09-19 08:03:44

    回答

    0

    如果使用NumPy的功能文件輸入輸出時,讀出的數據回你所得到的是能夠被切片爲Data[:,0]一個陣列,例如:

    步驟2)np.savetxt("Testing.txt", Testing)

    步驟3 )Data = np.loadtxt("Testing.txt", dtype=object)。請注意,dtype=object可能需要在這裏根據您的意見,你實際上是閱讀str對象。

    +0

    謝謝你指出這一點。有用! – DemonSu 2014-09-22 06:22:06

    +0

    @DemonSu太棒了!記住[你可以接受答案](http://meta.stackexchange.com/a/5235/215829)如果你想 – 2014-09-22 06:49:31

    相關問題