【发布时间】:2020-07-21 16:11:37
【问题描述】:
我有两个不同大小的数组,但我试图用匹配的“键”上的第二个数组中的值覆盖第一个数组中的一些值。我的实际问题可能有很多很多行,我已经确定这目前正在阻碍我的程序。
编辑:我没有意识到 a1 中可能存在重复值,应该保持重复。我在 np.array 示例中添加了一个这样的示例。
示例:
import numpy as np
# first two columns are 'keys', overwrite the 3rd column in a1 with the 3rd column from a2
# some values may be missing from a2. Those should keep the value in a1
a1 = np.array([[ 0.0, 2.0, 10.0 ],
[ 0.0, 2.0, 10.0 ],
[ 0.0, 3.0, 10.0 ],
[ 1.0, 3.0, 10.0 ],
[ 1.0, 13.0, 10.0 ],
[ 2.0, 2.0, 10.0 ],
[ 2.0, 5.0, 10.0 ]])
a2 = np.array([[ 0.0, 2.0, 0.0 ],
[ 0.0, 3.0, 0.713 ],
[ 1.0, 3.0, 0.713 ],
[ 1.0, 13.0, 1.0 ],
[ 2.0, 2.0, 0.0 ]])
# wanted result:
np.array([[ 0.0, 2.0, 0.0 ],
[ 0.0, 2.0, 0.0 ],
[ 0.0, 3.0, 0.713 ],
[ 1.0, 3.0, 0.713 ],
[ 1.0, 13.0, 1.0 ],
[ 2.0, 2.0, 0.0 ],
[ 2.0, 5.0, 10.0 ]])
当我执行这种蛮力操作时,我会简单地获取 a2 中的每一行并循环遍历 a1 中的每一行以替换匹配项上的值,但是有没有一种方法可以更有效地执行此操作?某种方式来对至少一个循环上的操作进行矢量化?我的实际情况涉及两个数组中的许多行,这需要很长时间。
【问题讨论】:
标签: python numpy optimization