Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不丢失以前存储的数据的情况下向numpy数组添加行_Python_Arrays_List_Numpy - Fatal编程技术网

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,然后我想将其堆叠到另一个数组中,以便所有数据都在一个矩阵中。