首页 > 解决方案 > 如何将像素值从南更改为零和一?

问题描述

我有一个 shape 的图像数组(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.])

请帮我解决这个问题。

标签: pythonnumpy

解决方案


这取决于您要完成的任务:

  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,:,:])

希望这可以帮助!


推荐阅读