我有一个形状为 (1212,2117) 的 numpy 数组。
该数组包含值为 0 或 rgeater 大于 0 的像素,如下所示:
我想给出无数据的 0 像素值。我试过这样做:
arr=arr.astype('float')
arr[arr==0]=np.nan
结果似乎是所有 NaN 的图表。只有一个小方块:
plt.imshow(test)
然而,似乎所有的值都发生了变化,好像我检查了这个数组的最大值或最小值是多少,我得到了 nan:
test.max()
>>>nan
test.min()
>>>nan
我想了解为什么会得到这个结果,以及如何正确地为值为 0 的像素不提供任何数据值。
答案 0 :(得分:0)
列个清单
遍历每个像素,检查它是否为nan,然后附加0,如果不是则附加数字。
np.array(你的数组)
虽然它不是pythonic,但它可以完成工作。
答案 1 :(得分:0)
您在 docs(备注部分)中有原因和解决方案。
<块引用>NaN 值被传播,也就是说,如果至少一项是 NaN,则 相应的最大值也将是 NaN。忽略 NaN 值 (MATLAB 行为),请使用 nanmax。
np.nanmax(arr)
# and
np.nanmin(arr))
应该给出预期的结果。