首页 > 解决方案 > 从列表中的列表中分离出数据的最有效方法

问题描述

我有一个输出 2 个数组的函数,我们称它们为 X_i 和 Y_i,它们是两个 N x 1 数组,其中 N 是点数。通过使用多处理的 pool.apply_aync,我能够并行化这个函数,这给了我一个巨大的列表。结果的结构是 M 个值的列表,其中每个值是一个包含 X_i 和 Y_i 的列表。所以总而言之,我有一个巨大的列表,其中包含两个数组 X_i 和 Y_i 的 M 个较小的列表。

现在我想将所有 X_i 附加到一个名为 X 和 Y_i 的数组中,称为 Y。最有效的方法是什么?我正在寻找某种并行算法。订单无关紧要!

到目前为止,我只有一个简单的 for 循环来分隔这个庞大的数据数组:

X = np.zeros((N,1))
Y = np.zeros((N,1))
for i in range(len(results))
    X = np.append(results[i][0].reshape(N,1),X,axis = 1)
    Y = np.append(results[i][1].reshape(N,1),Y,axis = 1)

我发现这个算法相当慢,所以我需要加快速度!谢谢!

标签: pythonarrayspython-3.xsortingfor-loop

解决方案


你应该为你的问题提供一个简单的场景,把它分解并给我们一个简单的输入、输出场景,这会很有帮助,因为所有这些变量和文本都会让它有点混乱。也许这会有所帮助;您可以解压缩列表,然后按索引获取您需要的列表,将列表附加到新的空 X[] 并将您需要的另一个列表附加到 Y[],最后将数组从列表中取出并合并这些进入新的 N 维数组或新列表。

list = [[[1,2],[3,4]],[[4,5],[6,7]]]
sub_pre = []
flat_list = []
for sublist in list:
    sub_pre.append(sublist)
    for item in sublist:
        flat_list.append(item)
print(list)
print(flat_list)

推荐阅读