【问题标题】:Change 0 values to nan values in numpy array changes everything to nan将 0 值更改为 numpy 数组中的 nan 值将所有内容更改为 nan
【发布时间】:2021-08-26 09:22:49
【问题描述】:

我有一个形状为 (1212,2117) 的 numpy 数组。 该数组包含值为 0 或值大于 0 的像素,如下所示:

我想给出无数据的 0 像素值。我试过这样做:

arr=arr.astype('float')
arr[arr==0]=np.nan

似乎结果是所有 NaN 的图表。带有一个小方块:

plt.imshow(test)

但是,似乎所有值都发生了变化,好像我检查了这个数组的最大值或最小值,我得到了 nan:

test.max()
>>>nan

test.min()
>>>nan

我想了解为什么我会得到这个结果,以及如何正确地为值为 0 的像素不提供数据值

【问题讨论】:

    标签: python arrays numpy nan


    【解决方案1】:

    列个清单

    遍历每个像素,检查是否为nan,然后追加0,如果不是则追加数字。

    np.array(你的数组)

    虽然它不是pythonic,但它可以完成工作。

    【讨论】:

      【解决方案2】:

      原因和解决方法在docs(备注部分)。

      传播 NaN 值,即如果至少一项为 NaN,则 相应的最大值也将是 NaN。忽略 NaN 值 (MATLAB 行为),请使用 nanmax。

      np.nanmax(arr)
      # and
      np.nanmin(arr))
      

      应该给出预期的结果。

      【讨论】:

        猜你喜欢
        • 2017-06-25
        • 2021-03-13
        • 2020-03-24
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多