将长纬度值分配给数组

时间:2019-07-16 15:55:17

标签: python

我有一个用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])

但是那没有用。任何帮助将不胜感激,或链接到其他回答该问题的问题。我找不到任何东西。

1 个答案:

答案 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])