Python索引和分配由行数组



我的脚本有问题,我发现了错误,但我完全卡住了。

有一个包含两个元素的数组b:

b = np.zeros ((1,2))
b[0,0] = 272
b[0,1] = 1578

我想检查第二列中是否有大于某个值的元素,如果是,则将该值赋值为0。

命令

b[ b[:,1] >= 1000 ] = 0

将两个元素都改为0而不是b[0,1]

我错过了什么?

thanks in advance

C

如果我理解正确,您只想将第二列设置为零(如果其值>1000)?我将您的示例扩展为至少有两行,但只是测试了它的工作也与一个:

b = np.array([[123, 456],
              [789, 101112]])
mask = b[:,1] > 1000
b[mask,1] = 0
print b

我定义mask是为了更好地解释它——你可以代入。mask是一个布尔向量,每行有一个元素,在本例中是[False, True]。在最后一步中,mask用于屏蔽选中的行,并为第一个列元素分配0。

我认为你可以循环b ?

b_rows = 1 #number of your rows
for i in range(b_rows):
   if b[i,1] >= 1000:
      b[i,1]=0

最新更新