Python:如何创建一个循环来改变经度数据

时间:2017-08-14 19:06:09

标签: python python-3.x loops coordinates

我正在使用python 3.6将降水数据映射到一个大陆。问题是我拥有的数据的经度值范围从0到360,我需要将数据设置为-180到180才能映射它。我需要创建一个循环,表明经度是否> 180然后新的经度=经度-360。 关于我的数据:我想要经历56年。 x是我存储所有经度值的地方

这是我到目前为止所做的:

lon=[]
for n in range(0,56):
    lon=x[n]
    if lon > 180:
        lon=lon-360
np.save('filename',lon)

这看起来不错吗?有没有与我的问题相似的例子?谢谢!

3 个答案:

答案 0 :(得分:3)

检查一下:

x=[100,200,400,500,100,181,179]
lon=[]
for n in x:
    if n > 180:
        lon.append(n-360)
    else:
        lon.append(n)

使用np.where

x=np.asarray(x)
np.where(x >180,x-360,x)

答案 1 :(得分:2)

我会使用Numpy,因为@Wen已经建议:

In [16]: lon = np.array([100,200,400,500,100,181,179])

In [17]: lon
Out[17]: array([100, 200, 400, 500, 100, 181, 179])

In [18]: lon = np.where(lon > 180, lon-360, lon)

In [19]: lon
Out[19]: array([ 100, -160,   40,  140,  100, -179,  179])

或者我们可以这样做:

In [30]: lon[lon>180] -= 360

In [31]: lon
Out[31]: array([ 100, -160,   40,  140,  100, -179,  179])

答案 2 :(得分:1)

您可以尝试:

x=[100,200,400,500,100,181,179]
lon = [y if (y <= 180) else (y - 360)  for y in x ]