繁体   English   中英

将 numpy 数组中的 0 值更改为 nan 值,将所有内容更改为 nan

[英]Change 0 values to nan values in numpy array changes everything to nan

我有形状为 (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 的像素不给出数据值

做一个列表

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

np.array(你的数组)

虽然它是非pythonic,但它可能会完成工作。

您在文档(注释部分)中有原因和解决方案。

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

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

应该给出预期的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM