我正在使用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)
这看起来不错吗?有没有与我的问题相似的例子?谢谢!
答案 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 ]