如何更新满足列条件的numpy列?

时间:2018-08-30 05:06:53

标签: python-2.7 numpy

如果我具有以下条件:

import numpy as np
a = np.array([[0, 1],
              [1, 3],
              [4, 4]])

如果要满足列条件,则要更新列值。例如,如果第二列值大于2,则仅用9替换该列值。

a = [[0, 1],
     [1, 9],
     [4, 9]]

我本以为这会起作用,但是会更新该行中的所有值。

a[a[:,1] > 2] = 9

但是它将替换行中的所有值。

a =[[0, 1],
    [9, 9],
    [9, 9]]

我想我对这里如何创建布尔索引缺少一些了解。

1 个答案:

答案 0 :(得分:2)

您需要:

import numpy as np
a = np.array([[0, 1],
               [1, 3],
               [4, 4]])

a[:,1]=  np.where(a[:,1]>2, 9, a[:,1])

print(a)

输出:

array([[0, 1],
       [1, 9],
       [4, 9]])

为什么您的代码不起作用

尝试打印print(a[a[:,1] > 2])

它将输出为:

[[1 3]
 [4 4]]

它将检查第二个索引是否大于2,并将返回整行。