如何将无数据值3.4028231e+38替换为努比·楠

2024-09-30 06:11:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个二维阵列从光栅图像。光栅图像没有分配给-3.4028231e+38的数据值,我试图将此值替换为“nan”,但在对其应用条件运算符时找不到该值。在

我的数据如下:

>>> slice22 = inndvi[0:2,0:2]
>>> slice22
array([[ -3.40282306e+38,  -3.40282306e+38],
       [ -3.40282306e+38,  -3.40282306e+38]], dtype=float32)

当我试图在if语句中检查这些值时:

^{pr2}$

输出为“否”

因此,我无法将3.40282306e+38分配给努比·楠具体如下:

slice22[slice22 == 3.40282306e+38] = numpy.nan

还有一件事我想说的是,我的数据集在光栅中的范围是从+2到-2。 我试着用这个范围来消除3.40282306e+38的值,但还是有错误。在

>>> slice22 [slice22 < 2 and slice22 >2 ]= np.nan 
Runtime error 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Tags: 数据图像numpyif光栅运算符语句nan
2条回答

它必须等于-3.40282306e+38才能使算法工作吗? 如果不是,试着用一个不等式代替相等。equality适用于浮点数,如果它们是完美整数,比如0,对于像你这样使用不等式的数字来说,也许就是答案。不会像

(-3.40282306e+38-smallnumber) fix your problem?-You have to set small number to somthing in the context of your problem which I dont know what it is.

考虑到您知道您的实际值在-2和2之间,您可以很容易地过滤掉超出此范围的任何内容。在

a[(a < -2) | (a > 2)] = np.nan   #option 1
a[np.abs(a) > 2] = np.nan   #option 2
a[np.logical_or(a < -2, a > 2)] = np.nan   #option 3

相关问题 更多 >

    热门问题