1

我正在从文件中读取数据并从中提取我想要的信息,作为浮点数。然后我将这些数据存储到一个临时列表中,并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操作吗?我不想限制可以获得的数据量。

谢谢!

4

1 回答 1

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)
于 2013-09-10T16:37:15.143 回答