将一个完整的数组附加到for循环中的其他数组,类似于附加到列表(python)



我有一个函数,它返回一个数组,我想继续用不同的参数调用该函数,然后在for循环的过程中继续追加结果数组。现在,我只需要定义一个列表,并将新数组添加到列表中,然后将其全部堆叠在最后。这似乎效率很低。

这里有一个例子:在这里,我刚刚定义了一个带有numpy random.rand的数组,以显示应该返回并附加的数组类型。

import numpy as np
total = 3
rows = 3
my_list = []
for i in range(total):
output_array = np.random.rand(rows,2) # this could be variable
my_list.append(output_array)
final_array = np.vstack(my_list)

有没有更有效的方法可以做到这一点,这样我就可以直接追加到数组中,并在最后获得最终的完整数组?问题是,我不知道在列表上循环的预定次数,所以我不能使用串联等。

列表是为高效追加而设计的,通过引用将对象存储在具有增长空间的缓冲区中。

阵列只能通过制作新阵列来增长,需要完整的副本。在整个列表中,最好只做一次。迭代连接需要更多的复制。

但是,请随意做自己的时间测试。

最新更新