python - 当第一列匹配时,将数组第二列中的元素替换为较小数组第二列中的新值

标签 python numpy

我有两个二维数组,例如,

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/

相关文章:

python - 通过引用传递给 python 中的类的参数(la C++),用类方法修改它

python - 带有 numpy 数组的 dask bag foldby

python - 具有用户定义值级别的 pcolormesh

python - python 中的简单命令行应用程序 - 解析用户输入?

python - 为什么 np.mean 应用于 pandas 字符串列不会产生错误?

python - 运行时警告 : overflow encountered in exp in computing the logistic function

python - Numpy 选择懒版本

Python二进制文件读取问题

python - Python 中的条件嵌套循环

python - Django:如何在不使用默认管理员的情况下管理组和权限