首页 > 解决方案 > np.where 不会更改给定列表列表的 numpy 数组

问题描述

我想有条件地填充给定列表的 numpy 数组。

遍历 numpy 数组的每个元素my_list并查找dup_list它是否具有对值,例如,1 的对值是 35。然后,将 1 中的 1 更改为 35 my_list

my_list = np.array([1, 2, 3, 4])
dup_list = [[1, 35], [4, 31]]

的理想结果my_list

array([35, 2, 3, 31])

我下面的代码没有改变任何东西......

for dup in dup_list:
    np.where(my_list==dup[0], dup[1], my_list) 

my_list

array([1, 2, 3, 4])

标签: pythonnumpy

解决方案


我认为这就是你想要做的:

import numpy as np

my_list = np.array([1, 2, 3, 4])
dup_list = [[1, 35], [4, 31]]

for dup in dup_list:
    my_list[np.where(my_list==dup[0])] = dup[1]

print(my_list)

结果:

[35  2  3 31]

推荐阅读