我有一个来自范围[0,3]的整数向量,例如:
v = [0,0,1,2,1,3, 0,3,0,2,1,1,0,2,0,3,2,1]
。
我知道我可以使用以下
用其他值替换向量中的元素的特定值v[v == 0] = 5
将向量v中的0
的所有外观更改为值5
。
但我想做一些不同的事情 - 我想将0
的所有值(让我们称之为target values
)更改为1
,并且所有值都与{{1}不同} 0
,因此我想获得以下内容:
0
但是,我无法调用替换代码(我在上面使用过),如下所示:
v = [1,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0]
因为这显然会导致零向量。 是否有可能以parralel方式进行上述替换,以获得所需的向量? (我希望有一种通用技术,即使我改变目标值,我也可以使用它。)任何建议都会非常有用!
答案 0 :(得分:1)
您可以检查v
是否等于零,然后将布尔数组转换为int,因此如果原始值为零,则布尔值为true并转换为1,否则为0:
v = np.array([0,0,1,2,1,3, 0,3,0,2,1,1,0,2,0,3,2,1])
(v == 0).astype(int)
# array([1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0])
或使用numpy.where
:
np.where(v == 0, 1, 0)
# array([1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0])