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

问题描述 投票:0回答: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
但无法更改其中任何一个。

python numpy numpy-ndarray
2个回答
15
投票

如果您有多个条件,最好使用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]

3
投票

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])
© www.soinside.com 2019 - 2024. All rights reserved.