我常常做类似的事情:
data = []
for i in range(number_of_components):
d = some calculation (output may change size)
data.append(d)
data = np.asarray(data)
将数据存储在列表中非常方便。特别是如果数据可能会改变它的大小。我经常使用numpy数组,当每个函数返回一个数组或一个列表时,我发现它更容易。所以我最终得到了这样的结构。有更好的解决方案吗?
答案 0 :(得分:1)
显然,这种方法的唯一方法是d
与给定循环中所有i
的长度相同(但正如您所建议的那样,它可以在循环之间更改)。我经常会遇到这种情况,当内存等非常重要时,我只是在第一次调用时创建数组。
类似的东西:
data = None
for i in range(number_of_components):
d = some calculation()
if data is None:
data = np.empty((number_of_components,) + d.shape, d.dtype)
data[i, ...] = d
这无疑避免了多余的临时名单。