python - 从列表中的列表中分离出数据的最有效方法
问题描述
我有一个输出 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)
我发现这个算法相当慢,所以我需要加快速度!谢谢!
解决方案
你应该为你的问题提供一个简单的场景,把它分解并给我们一个简单的输入、输出场景,这会很有帮助,因为所有这些变量和文本都会让它有点混乱。也许这会有所帮助;您可以解压缩列表,然后按索引获取您需要的列表,将列表附加到新的空 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)
推荐阅读
- eclipse - Eclipse Java EE IDE 2021-06 启动 tomcat 9 服务器出现错误
- c++ - 从 Visual Studio 检查进程的环境变量
- docker - 使用 nginx 映像进行多阶段 docker 构建
- azure - 从 Azure 数据工厂发送时,发票端点不接受日期格式
- java - 从Birt下载时如何更改文件名?
- reactjs - 我可以在本机反应中使用函数而不是颜色名称吗
- javascript - 图像未在 ejs 中呈现
- javascript - 当 useEffect 道具改变时反应停止超时
- ruby-on-rails - 升级到 Rails 6.1.4 后无法创建新的 Rails 应用程序
- c++ - WIN32API C++ 我在编写文本框时遇到问题。无法正确显示文字