【发布时间】:2015-12-22 17:04:02
【问题描述】:
我正在尝试以最有效(即最快)的方式将数组信息转换为列表。
我有一个称为 node_map 的列表,我想将其作为字典的键,然后是我想与 node_map 关联的节点坐标 (node_coords_tmp) 的 3D 数组。
Node_map 看起来像:
[1,2,3,4,5]
Node_coords 在最初打印时报告为:
(<exodus.c_double_Array_8352100 object at 0x2c2d8c0>, <exodus.c_double_Array_8352100 object at 0x2c2d5f0>, <exodus.c_double_Array_8352100 object at 0x2c2d560>)
最初我是这样填写字典的:
for ct,i in enumerate(node_map):
node_coords[i] = [node_coords_tmp[0][ct],node_coords_tmp[1][ct],node_coords_tmp[2][ct]]
这满足了我的要求,但是对于我正在处理的数组的大小而言,它比我想要的要慢。有没有更好的方法来使用 numpy 或其他形式来做到这一点?谢谢。
【问题讨论】:
-
您如何想象在少于 O(n) 的时间内填充字典?您必须遍历每个项目。
-
它将是 O(n),但系数可能很大,具体取决于 OP 正在处理的具体 n..
-
@dimo 并非所有具有相同对数估计的算法都在完全相同的时间执行。
-
当然不是,但如果您关心的是输入的大小,那么您是在询问渐近复杂度。
标签: python arrays performance dictionary