【发布时间】:2014-09-28 09:01:50
【问题描述】:
我有一个 numpy 数组,我想用第二个数组中的数据更新其中的一列值。有点像 excel 中的 vlookup 函数。
需要在b表中查找a的第一列。然后将a中的第二列替换为b中第二列的数字。
import numpy as np
# type, newval
a = np.array( [[1, 23, 0],
[2, 24, 0],
[1, 15, 0],
[1, 27, 0],
[6, 22, 0],
[1, 18, 0]]
)
# type, newval
b = np.array([[1, 1.1],
[2, 2.1],
[3, 3.1],
[4, 4.1],
[5, 5.1],
[6, 6.1]]
)
a[:,2] = np.where(b[:,0] == a[:,0], b[:,1], None)
预期结果
注意:我希望使用查找值更新原始数组 a。
a = array( [[1, 23, 1.1],
[2, 24, 2.1],
[1, 15, 1.1],
[1, 27, 1.1],
[6, 22, 6.1],
[1, 18, 1.1]]
)
然而,我得到的是nan 在数组中的最后 4 个项目旁边。就像我的np.where 条件正在替换位置和数字正确的值,而不仅仅是数字匹配的位置。
【问题讨论】:
-
注意,
b数组可以是列表或任何其他类型的对象,如果它使事情变得更容易的话。a数组是从文件中读取的,所以我不想改变它的结构。 -
你确定你的“预期结果”是正确的吗?在第二行第二列中,我期望 2.1。第 5 行和第 6 行似乎互换了。
-
Zinjaai,是的,你是对的。我已经在上面修复了。谢谢。