在Python中从数据中选择一个范围而不丢失维度

2024-07-08 14:36:45 发布

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

我有一个数组,我想从数据中选择一个范围。数据集在twi数组中,最小值为0,最大值为26。你知道吗

我将数据集从光栅转换为数组twi_raster再转换为twi_array。你知道吗

 twi_array = arc.RasterToNumPyArray(twi_raster , nodata_to_value=0)
 x= twi_array>9 and twi_array<=17
 twi_array = [ twi_array if x else 0 for x in twi_array]

我想选择我感兴趣的范围,但是我失败了,因为我的if条件是错误的。你知道吗

x= twi_array>9 and twi_array<=17
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Tags: andto数据forifvalue光栅数组
1条回答
网友
1楼 · 发布于 2024-07-08 14:36:45

我的答案中混入了一些概念,这可能会让你更加困惑,所以让我来为你细分一下。这是对你问题最忠实的回答:

twi_array = arc.RasterToNumPyArray(twi_raster , nodata_to_value=0)
x = lambda foo: foo > 9 and foo <= 17
twi_array = [bar if x(bar) else 0 for bar in twi_array]

x定义为lambda函数,其功能与:

def x(foo):
   return foo > 9 and foo <= 17

我们使用bar if x(bar) else 0作为python三元运算符 相当于:

if x(bar):
    bar
else:
    0

bar仅在列表理解的范围内定义(即在[...]内)。我们用它来迭代twi_array的元素

相关问题 更多 >

    热门问题