我的脚本出了点问题,我发现了错误,但我完全卡住了。
有数组b包含两个元素:
b = np.zeros ((1,2))
b[0,0] = 272
b[0,1] = 1578
我想检查第二列中是否有元素,大于某个值,如果是,则将该值指定为零。
命令
b[ b[:,1] >= 1000 ] = 0
将两个元素都更改为0而不是b[0,1]
我错过了什么?
提前致谢
C
答案 0 :(得分:0)
我认为你可以循环过来?
b_rows = 1 #number of your rows
for i in range(b_rows):
if b[i,1] >= 1000:
b[i,1]=0
答案 1 :(得分:0)
如果我理解正确,您只想将第二列设置为零(如果其值> 1000)?我将您的示例扩展为至少有两行,但只是测试它也可以使用一行:
b = np.array([[123, 456],
[789, 101112]])
mask = b[:,1] > 1000
b[mask,1] = 0
print b
我定义了mask
来更好地解释它 - 你可以替换它。
mask
是一个布尔向量,每行有一个元素,在本例中为[False, True]
。在最后一步中,mask
用于屏蔽所选行,并为第一列元素指定零。