如果数字在列表中,则为Numpy布尔索引

问题描述 投票:0回答:2

我有以下数组:

x = np.array([
    [2, 0],
    [5, 0],
    [1, 0],
    [8, 0],
    [6, 0]])

我了解到您可以使用布尔运算来更改numpy数组中的选定值。如果要将第一个值等于2、5或8的行的第二列的值更改为1,我可以执行以下操作:

x[x[:, 0] == 2, 1] = 1
x[x[:, 0] == 5, 1] = 1
x[x[:, 0] == 8, 1] = 1

将输出更改为:

[[2 1]
 [5 1]
 [1 0]
 [8 1]
 [6 0]]

如果那是“正常”的python代码,我知道我可以做到:

if value in [2, 5, 8]: ...

而不是:

if value == 2 or value == 5 or value == 8: ...

是否有一个速记来对numpy数组做类似的事情?

python arrays numpy boolean-operations
2个回答
0
投票

您可以使用numpy的isin方法:

x[np.isin(x[:, 0], [2, 5, 8]), 1] = 1

0
投票

您可以将np.isin()np.isin()组合:

np.where()
© www.soinside.com 2019 - 2024. All rights reserved.