如何同时替换numpy数组中的值

How to replace values in numpy array at the same time

我有 numpy 个随机数数组。例如像这样 [7 1 2 0 2 3 4 0 5] 如果这个数组中的数字 = 7,我想同时替换每个数字,我想用 2 替换它,如果数字 = 2,我也想用 3 替换它。所以它会像 [2 1 3 0 3 3 4 0 5] 。我已经用 np.where 试过了,但不能改变任何一个。

如果你有多个条件,最好使用np.select

a = np.array([7, 1, 2, 0, 2, 3, 4, 0, 5])
a = np.select([a == 7, a == 2], [2, 3], a)

输出:

[2 1 3 0 3 3 4 0 5]

Numpy 使用标准 == 运算符提供与标量的比较,例如 arr == v return 布尔数组。取 arr[arr == v] 取满足条件的 arr 的子集(或切片),因此此代码段应该有效。

import numpy as np
arr = np.array([7, 1, 2, 0, 2, 3, 4, 0, 5])
arr[arr == 7] = 2
arr
array([2, 1, 2, 0, 2, 3, 4, 0, 5])

看看 this answer - 你可能需要 运行 两次替换操作,所以可能像 myarray[myarray == 2] = 3 然后 myarray[myarray == 7] = 2 这样的值改变了第二个条件没有被第一个替换改变(除非这是故意的)。