提问者:小点点

如何同时替换numpy数组中的值[重复]


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


共2个答案

匿名用户

如果您有多种条件,最好使用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返回一个布尔数组。获取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])