如果我具有以下条件:
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]]
我想我对这里如何创建布尔索引缺少一些了解。
答案 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,并将返回整行。