【发布时间】:2018-12-11 16:57:49
【问题描述】:
我有一个 numpy 二维整数数组:
a = numpy.array([[1, 1, 2, 2],
[0, 1, 2, 2],
[1, 3, 2, 3]])
我有一个包含原始值和新值的查找表(元组列表):
lookup = [(0, 1),
(1, 0),
(2, 255)]
我的任务是根据查找表对原始数组进行重新分类: 原始数组中的所有零都应变为 1,所有 1 应变为零,所有值 ==2 应更改为 255,其他值应保持不变。预期结果是:
[[0, 0, 255, 255],
[1, 0, 255, 255],
[0, 3, 255, 3]]
我尝试了以下解决方案:
for row in lookup:
original_value = row[0]
new_value = row[1]
a[a == original_value] = new_value
但是,我并没有得到想要的结果,上面的操作结果是:
[[0, 0, 255, 255],
[0, 0, 255, 255],
[0, 3, 255, 3]]
注意 result[1, 0] 是 0 但应该是 1。
是否有方法(嵌套循环除外)使用我的查找表更改原始数组中的值?
【问题讨论】:
标签: python arrays numpy matrix lookup