将行添加到numpy数组而不会丢失以前存储的数据

时间:2013-09-10 16:19:59

标签: python arrays list numpy

我正在从文件中读取数据并从中提取我想要的信息,如浮点数。然后,我将此数据存储到临时列表中,并使用vstack尝试将数据放入一个数组中,每行都是正在处理的新数据。

for line in lines:
    if line.find('GPS')!=-1:
        funcGPS(line)
    if line.find('-----')!=-1:
        MasterArray = numpy.vstack(temp)
        temp = []
        #print MasterArray
    if line.find('SERVO')!=-1:
        funcSERVO(line)

这就是我尝试将数据复制到数组的方式。我成功提取数据,并在提取获得的数据后,我想将数据添加到数组。目前,当我构建到MasterArray时,它正在复制先前数据上的数据。无论如何都没有明确说明MasterArray的大小是什么?我不想限制可以获得的数据量。

谢谢!

1 个答案:

答案 0 :(得分:2)

在循环中增长数组被认为是不好的做法。如果你知道数组的最终大小或合理的上限,最好预先分配数组然后填充它。如果您不知道最终大小,则可以经常使用临时列表并在循环后将其转换为数组。这不是numpy独有的,你会在matlab和c程序中看到类似的使用模式。

如果您知道阵列的最终大小或合理的上限,请执行此类操作。

N = 100
array = np.zeros(100)
count = 0
for line in file:
    array[count] = ...
    count += 1
 array = array[:count] # Or maybe array[:count].copy()

或类似的东西,如果你不这样做。

temp = []
for line in file:
    temp.append(...)
array = np.array(temp)