我正在从文件中读取数据并从中提取我想要的信息,如浮点数。然后,我将此数据存储到临时列表中,并使用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
的大小是什么?我不想限制可以获得的数据量。
谢谢!
答案 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)