我有两个二维数组,例如,
A = [[1,0],[2,0],[3,0],[4,0]]
B = [[2,0.3],[4,0.1]]
尽管数组要大得多,A 大约是 B 大小的 10 倍,A 中大约有 100,000 行。每当行的第一个元素匹配时,我想用 B 中的行替换 A 中的行,并保留A 中的其他行不变。在上面的例子中,我想最终得到:
[[1,0],[2,0.3],[3,0],[4,0.1]]
我该如何做到这一点,最好是有效地做到这一点?
最佳答案
无论如何,我们都必须遍历整个数组 A 一次,因为我们正在转换它。不过,我们可以加快查找速度,即查找 A 的特定第一个元素是否存在于 B 中。为此,从 B 中创建一个字典将是高效的。这样,查找将是常数时间。我在这里假设 A 的第一个元素仅与 B 的一个元素匹配。
将 B 转换为字典可以这样完成:
transformed_B = { item[0]: item[1] for item in B}
替换 A 中的元素可以这样完成:
transformed_A = [[item[0], transformed_B[item[0]]] if item[0] in transformed_B else item for item in A]
关于python - 当第一列匹配时,将数组第二列中的元素替换为较小数组第二列中的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978584/