2016-06-07 112 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基本上做的是,仅仅有更多花俏。