python索引并按行ndarray分配

时间:2016-10-31 21:08:58

标签: python numpy multidimensional-array indexing

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

有数组b包含两个元素:

b = np.zeros ((1,2))

b[0,0] = 272
b[0,1] = 1578

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

命令

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

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

我错过了什么?

提前致谢

C

2 个答案:

答案 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用于屏蔽所选行,并为第一列元素指定零。