如何将像素值从Nan更改为零和One?

时间:2019-01-29 12:23:06

标签: python numpy

我有一个(4, 64, 256)形状的图像阵列。
在像素[63, 0]处,我发现了nan值。

output[:, 63, 0] -----> array([nan, nan, nan,  1.])

因此,在使用output = np.nan_to_num(output)之后,我成功获得了:

output[:, 63, 0] -----> array([0., 0., 0., 1.])

然后我无法得到这样的声音:

output[:, 63, 0] -----> array([0., 0., 1., 1.])

我尝试了new = output[np.where(output[2, 63, 0] == 0), [2, 63, 0]] = 1

但它给出1而不是array([0., 0., 1., 1.])

作为输出

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

这取决于您要完成的工作:

  1. 如果您只想将单个“ 0”设置为“ 1”,请使用:output[2,63,0] = 1
  2. 如果您希望所有的“ 0”均为“ 1”,请使用:output = np.where(output == 0, 1, output)(请参阅:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.where.html
  3. 如果您只希望一个频道中的“ 0”为“ 1”,请使用:output[2,:,:] = np.where(output[2,:,:] == 0, 1, output[2,:,:])

希望这会有所帮助!