我有一个用c代码生成的csv文件。它实际上不是用逗号分隔,而是用空格分隔。看起来像这样:
0 0 -78.668289 34.107382
0 1 -78.666542 34.105195
0 2 -78.664772 34.103027
0 3 -78.662956 34.100878
0 4 -78.661110 34.098749
0 5 -78.659233 34.096641
0 6 -78.657326 34.094553
0 7 -78.655380 34.092486
0 8 -78.653404 34.090441
0 9 -78.651398 34.088417
第一列是x值,第二列是y值,第三列和第四列分别是long和lat。我创建了一个大小为xmax,ymax的数组,并想用相应的long,lat值填充它。有没有办法做到这一点?所以最后,我想要一个包含两个值(长,纬度)的列表数组。
我已经为每个变量创建了单独的数组。
hb = numpy.zeros((169,249)) #max x and y values
longs = []
lats = []
ivals = []
jvals = []
reader = csv.reader(f, delimiter=' ')
for row in reader:
long = float(row[2])
lat = float(row[3])
x = row[0]
y = row[1]
longs.append(long)
lats.append(lat)
xvals.append(i)
yvals.append(j)
但是不确定从那里去哪里。然后,我尝试了一个for循环:
for row in reader:
for h in range(ymax):
for g in range(xmax):
if h == int(row[1]) & g == int(row[0]):
hb[h,g] = float(row[2]) , float(row[3])
但是那没有用。任何帮助将不胜感激,或链接到其他回答该问题的问题。我找不到任何东西。
答案 0 :(得分:1)
您的零点数组维数错误。您需要一个形状为(xmax, ymax, 2)
的数组,因为每个x,y对都有2个值。
import numpy as np
hb = np.zeros((169, 249, 2)) #max x and y values
reader = csv.reader(f, delimiter=' ')
for row in reader:
longitude = float(row[2]) # don't use the name long, as it is already used
latitude = float(row[3])
x = int(row[0])
y = int(row[1])
hb[x,y] = np.array([longitude, latitude])