2016-06-07 187 views
1

現在我正在寫一個從文件讀取數據的函數,目標是將數據添加到numpy數組並返回所述數組。我想將數組作爲二維數組返回,但是我不確定數組的完整形狀是什麼(我知道列的數量而不是行)。 我有現在的問題是:給numpy數組添加一個列表

columns = _____ 
for line in currentFile: 
    currentLine = line.split() 
    data = np.zeros(shape=(columns),dtype=float) 
    tempData = [] 
    for i in range(columns): 
      tempData.append(currentLine[i]) 
     data = np.concatenate((data,tempdata),axis=0) 

然而,這使得一維數組。

基本上就是我要問的是:

有沒有辦法有一個行添加一個Python列表的numpy的陣列行數量可變的?

+0

甚至不用像這樣手動讀取它,你可以簡單地使用['numpy.loadtxt'](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy .loadtxt.html)讀取寫入numpy數組。同樣,你可以使用['numpy.genfromtxt'](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.genfromtxt.html#numpy.genfromtxt) – CoryKramer

回答

1

如果你的文件data.txt

1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 

所有你需要做的是

>>> import numpy as n 
>>> data_array = n.loadtxt("data.txt") 
>>> data_array 

array([[1., 2., 3., 4.], 
     [1., 2., 3., 4.], 
     [1., 2., 3., 4.], 
     [1., 2., 3., 4.], 
     [1., 2., 3., 4.], 
     [1., 2., 3., 4.]]) 
1

看構建陣列的常見方式:

np.array([[1,2,3],[4,5,6],[7,8,9]]) 
np.array([[1,2,3], 
      [4,5,6], 
      [7,8,9]]) 

輸入是一名單清單。你的讀者可以模仿,那

大致爲:

data = [] 
for line in f.readline(): 
    values = line.strip().split(',') 
    values = [int(v) for v in values] 
    data.append(values) 
data = np.array(data) 

np.loadtxtnp.genfromtxt基本上做的是,僅僅有更多花俏。