for i,(lonR,latR) in enumerate(zip(lon,lat))这个该怎么改?


mask=np.ones((72,124),)
for sp in proSP[0]:
    for i,(lonR,latR) in enumerate(zip(lon,lat)):
        for j,(lonP,latP) in enumerate(zip(lonR,latR)):
            if sp.contains(Point(lonP,latP)):
                msk[i,j]=0.0
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_8\1268312847.py in <module>
      1 mask=np.ones((72,124),)
      2 for sp in proSP[0]:
----> 3     for i,(lonR,latR) in enumerate(zip(lon,lat)):
      4         for j,(lonP,latP) in enumerate(zip(lonR,latR)):
      5             if sp.contains(Point(lonP,latP)):

NameError: name 'lon' is not defined

需要定义lon和lat变量,可以根据实际情况赋值。

  起初我以为您的遍历语法有问题,因为我没见过,就以为是错误用法。😂

  • 经试炼验证,这样子引用,简洁美妙

    img

  • 索引后面的变量一定要用圆括号包裹,因为枚举函数得到的是两个值,索引和序列元素对象本身。

    img


检查:检查前面的语句可有对lon的定义或者拼写错误亦或者大小写字母不对应。


修改:如果没有定义,在第三行引用前定义或者直接用序列对象替换变量lon。