2016-03-02 98 views
-3

我的文件看起來像這樣如何用numpy重塑這個數組?

3.766204987418e+00 3.016098278453e+00 2.882128625608e+00 2.789447648712e+00 2.704276250639e+00 
2.540138572067e+00 2.318587560199e+00 2.272640952350e+00 2.138794921589e+00 

我也有代碼,閱讀它

import numpy as np 

zxyr=[] 

with open('det.txt') as f: 
    zxyr=list(f) 

c=np.asarray(zxyr) 
print c.shape 
print len(c) 

產生

(2,) 
2 

如何重塑陣列有(9)形狀?

編輯 我曾嘗試

import numpy as np  

c = np.loadtxt('det.txt') 
print (c.shape) 

Traceback (most recent call last): 
    File "kiev.py", line 3, in <module> 
    c = np.loadtxt('det.txt') 
    File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 856, in loadtxt 
    X = np.array(X, dtype) 
ValueError: setting an array element with a sequence. 
+0

的好辦法是'C = np.loadtxt( '的test.txt')'。 2這是因爲你的文件中有兩行。刪除線路返回。 –

+0

您必須以文件形式讀入數字。打印出zxyr,你會看到問題。你給numpy提供了錯誤的信息來構建你想要的數組。在這一點上重塑將無濟於事。 – Prune

+0

我認爲這個錯誤是因爲你的文本文件中的2行有不同數量的列。嘗試使用'numpy.genfromtxt'使用這裏找到的文檔信息http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.genfromtxt.html – DavidG

回答

0

正如@ B.M。在評論中說你需要使用np.loadtxt。如下所示:

import numpy as np  

c = np.loadtxt('mytextfile.txt) 
print (c.shape) 

這將從文件中獲取數據並將其放入一個numpy數組中。 如果我的示例中的文本文件與您的文本文件相同,那麼它將根據您的需要具有(9,)的形狀。

你可以做的另一種方法是:

with open('mytextfile.txt') as f: 
    content = f.readlines() 
+0

看看編輯! – Sinisha

+0

@sinisha我已經更新了我的答案。看看是否有幫助。 – DavidG