Python 在不丢失以前存储的数据的情况下向numpy数组添加行
我从一个文件中读取数据并从中提取我想要的信息,作为浮动。然后,我将这些数据存储到一个临时列表中,并使用Python 在不丢失以前存储的数据的情况下向numpy数组添加行,python,arrays,list,numpy,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 = []
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
的大小的情况下,是否可以这样做?我不想限制可以获得的数据量
谢谢 在循环中增长数组被认为是不好的做法。如果您知道数组的最终大小或合理上限,那么最好预先分配数组,然后填充它。如果不知道最终的大小,通常可以使用临时列表,并在循环后将其转换为数组。这不是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)
temp
来自哪里?您可以在循环中使用np.append
而不是np.vstack
,或者您可以继续将其添加到列表中,并在循环后对该列表进行vstack,但最好使用np.genfromtxt
立即加载所有数据,然后编辑它。除非我们知道什么是temp
,以及它是如何构造的,否则我们可能无能为力vstack
接受一系列数组,并将它们连接在一起。所以temp
应该是一个元组或要连接的数组列表;如果要附加到MasterArray
,则temp
的定义需要类似于temp=(MasterArray,newrow)
。但这并不是创建动态数组的最佳方法;有关更多信息,请参阅。temp是1xn矩阵(目前为1x20)。Append可以工作,但它会将它添加到列的末尾,我希望它是一个新行。temp来自这行代码,它从文件中提取数据。对于listline中的元素:value=element.split(':')value=value[1]。split('}')float(value[0])#print value[0]temp.append(float(value[0]),在放入主数组之前执行两次。谢谢你的帮助!谢谢我不知道尺寸,但它会非常大。我将数据附加到temp,然后我想将其堆叠到另一个数组中,以便所有数据都在一个矩阵中。