如何同时替换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
这样的值改变了第二个条件没有被第一个替换改变(除非这是故意的)。
我有 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
这样的值改变了第二个条件没有被第一个替换改变(除非这是故意的)。