当仅在大陆上绘制数据时,程序将永远运行而不会出错

时间:2012-12-10 11:27:09

标签: python matplotlib matplotlib-basemap

我试图仅在大陆上绘制数据。我之前问了一个问题,我得到了答案here。 现在当我在代码中实现它时,程序将运行而不会出错。

然而,它永远运行。当我使用ctrl + C强制停止它时,它会追溯到"if not (map.is_land(X[i], Y[i])):",所以我觉得这里有些不对劲。但我无法弄清楚。

以下是涉及挑选非大陆数据并将其删除的代码部分:

X, Y = map(Lon,Lat)
ocean = []
for i in range(len(X)):
    if not (map.is_land(X[i], Y[i])):
        ocean.append(i)

X_new = np.delete(X, ocean)
Y_new = np.delete(Y, ocean)
HDO_new = np.delete(HDO, ocean)

1 个答案:

答案 0 :(得分:1)

由于你使用for循环,程序应该停止,唯一的问题是X有多大。我只能提出两点建议:

1)在进入for cicle之前尝试打印len(X)的值,看看有多大

2)尝试使用xrange而不是range,如果你使用python 2.x

请记住,使用包含数十万元素的列表似乎很慢。 如果可以的话,最终尝试使用较小的数据样本