【发布时间】:2025-11-29 13:40:01
【问题描述】:
我有 .csv 格式的网格数据:
srcPath = "/data.csv"
f = open(srcPath,"r")
lines = f.readlines()
f.close()
miss = -9999.
ny,nx = 360,720
dlat = 0.5
dlon = 0.5
lat0 = -90.0
lon0 = -180.0
Lat = arange(-90, 90+0.001, dlat)
Lon = arange(-180, 180+0.001, dlon)
a2dat0 = ones([ny,nx],float32)*miss
a2dat1 = ones([ny,nx],float32)*miss
a2dat3 = ones([ny,nx],float32)*miss
a2dat4 = ones([ny,nx],float32)*miss
a2dat5 = ones([ny,nx],float32)*miss
a2dat6 = ones([ny,nx],float32)*miss
for line in lines:
lon, lat, v0,v1,v2,v3,v4,v5,v6 =map(float,line.split(","))
x = int(floor((lon - lon0)/dlon))
y = int(floor((lat - lat0)/dlat))
a2dat0 [y,x] = v0
a2dat1 [y,x] = v1
a2dat2 [y,x] = v2
a2dat3 [y,x] = v3
a2dat4 [y,x] = v4
a2dat5 [y,x] = v5
a2dat6 [y,x] = v6
X, Y = meshgrid(Lon, Lat)
m= Basemap(projection='robin',llcrnrlon=-180.,llcrnrlat=-90.,urcrnrlon=180.,urcrnrlat=90.,resolution='i',lon_0=0)
xi, yi = m(X, Y)
现在我想在“a2dat”上放个屁:
for i in range (0,7,1):
print a2dat+str(i)+":" ,a2dat+str(i).shape
或
for i in range (0,7,1):
cs+str(i) = m.pcolor(xi,yi,a2dat+str(i),cmap=cmap, norm=norm, )
使用底图和“a2dat”数据绘制 7 个不同的全局地图,但它给出了返回错误,那么我该如何对这些数据名称进行循环呢?
【问题讨论】:
-
错误是什么?
-
当我只想在 for 循环中打印 "a2dat+str(i)" 时出错 "ufunc 'add' 不包含签名匹配类型 dtype('S32') dtype(' 的循环S32') dtype('S32')"
-
使用列表 7 数组,您不必以非 Python 方式进行名称生成。
-
如果代码已经写得很清楚,为什么要用这个循环和名称生成让它变得模糊呢?这是 python,不是没有列表或字典的原始语言。
-
@hpaulj 对不起,但我没有明白你的意思,这种 cmets 永远不会帮助任何人。我从其他人那里得到了答案。