我有一个函数,它返回一个数组,我想继续用不同的参数调用该函数,然后在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)
有没有更有效的方法可以做到这一点,这样我就可以直接追加到数组中,并在最后获得最终的完整数组?问题是,我不知道在列表上循环的预定次数,所以我不能使用串联等。
列表是为高效追加而设计的,通过引用将对象存储在具有增长空间的缓冲区中。
阵列只能通过制作新阵列来增长,需要完整的副本。在整个列表中,最好只做一次。迭代连接需要更多的复制。
但是,请随意做自己的时间测试。