使用列表在循环中存储数据并转换为np.array

时间:2014-11-26 12:50:01

标签: python numpy

我常常做类似的事情:

data = []
for i in range(number_of_components):
    d = some calculation (output may change size)
    data.append(d)
data = np.asarray(data)

将数据存储在列表中非常方便。特别是如果数据可能会改变它的大小。我经常使用numpy数组,当每个函数返回一个数组或一个列表时,我发现它更容易。所以我最终得到了这样的结构。有更好的解决方案吗?

1 个答案:

答案 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

这无疑避免了多余的临时名单。