在同一行中定义变量时出现未定义变量错误

2024-09-16 20:12:23 发布

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

当我尝试使用Numpy设置阵列时,如下所示:

def Landcover_Crops_nr(polygons):
    dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
    type_crop = dataset.select("landcover")
    arr = np.array(type_crop)
values, frequencies= np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]

我得到错误:“消息”:“未定义变量‘arr’”

我该怎么做才能解决这个问题


Tags: cropscropimagenumpydeftypenpdataset
1条回答
网友
1楼 · 发布于 2024-09-16 20:12:23

至于我,你的压痕不对,这就成了问题

#  - function  -

def Landcover_Crops_nr(polygons):
    dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
    type_crop = dataset.select("landcover")
    arr = np.array(type_crop)
    values, frequencies = np.unique(arr, return_counts=True)
    sum = np.sum(frequencies)
    percentages = [x/sum*100 for x in frequencies]

#  - outside function  -

但若缩进是正确的,那个么您必须知道函数创建局部变量arr,并且它不存在于函数之外

您必须使用global arr通知要分配给外部/全局变量的函数。在使用arr外部函数之前,不要忘记执行这个函数

#  - function  -

def Landcover_Crops_nr(polygons):
    global arr

    dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
    type_crop = dataset.select("landcover")
    arr = np.array(type_crop)

#  - outside function  -

Landcover_Crops_nr(polygons)  # execute function to create variable `arr`

values, frequencies= np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]

但是更好地使用return arr——它将更具可读性。并将结果分配给外部arr

#  - function  -

def Landcover_Crops_nr(polygons):
    dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
    type_crop = dataset.select("landcover")
    arr = np.array(type_crop)

    return arr    

#  - outside function  -

arr = Landcover_Crops_nr(polygons)  # execute function to get local `arr` and assign to global `arr`

values, frequencies= np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]

相关问题 更多 >