Как мне сгенерировать список координат (широта, долгота) из списка координат, сгенерированных с использованием numpy arange - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сгенерировать текстовый файл со значениями lat, long, i, j, z.Мне удалось создать список значений i, j, z, используя следующее:

n = 51
m = 31

data = [(i,j,i*2) for i in range(n) for j in range(m)]

Однако я не уверен, как это сделать, если я создаю диапазон значений, используя numpy arange

lat = np.arange(33.8916,34.0426,0.003)
long = np.arange(78.0136,77.9236,-0.003)

Есть ли способ сделать это?Оба (n, m) и (lat, long) имеют одинаковые размеры (51,31).Так что я хотел бы иметь текстовый файл, который имеет:

33.8916,78.0136,0,0,0
33.8946,78.0166,0,1,0
...
34.0416,77.9236,50,30,100

1 Ответ

0 голосов
/ 26 марта 2019

Использование zip():

n = 51
m = 31

data = [(i,j,i*2) for i in range(n) for j in range(m)]
data = [', '.join(map(str, x)) for x in data]   # removing the tuples

lat = np.arange(33.8916,34.0426,0.003)
long = np.arange(78.0136,78.1036,0.003)

res = list(zip(lat,long,data))     # zipping the lists together

logFile = "list.txt"

with open(logFile, "w") as f:
   for data in res:
       f.write("%s, %s, %s" % data + "\n")

ВЫХОД (list.txt) :

33.8916, 78.0136, 0, 0, 0
33.8946, 78.0166, 0, 1, 0
33.8976, 78.0196, 0, 2, 0
33.9006, 78.0226, 0, 3, 0
33.9036, 78.0256, 0, 4, 0
33.9066, 78.0286, 0, 5, 0
.
.
.

РЕДАКТИРОВАТЬ :

Чтобы пройти весь путь до data, используйте zip_longest():

res = list(zip_longest(lat,long,data))

logFile = "list.txt"

with open(logFile, "w") as f:
    for data in res:
        f.write("%s, %s, %s" % data + "\n")

Примечание: Использование zip_longest вставляет None при значениях missing

Например :

print(len(data))    # 1581
print(len(lat))     # 51
print(len(long))    # 31

Следовательно:

ВЫХОД :

33.8916, 78.0136, 0, 0, 0
33.8946, 78.0166, 0, 1, 0
33.8976, 78.0196, 0, 2, 0
.
.
33.9846, None, 1, 0, 2
33.9876, None, 1, 1, 2
.
.
None, None, 50, 28, 100
None, None, 50, 29, 100
None, None, 50, 30, 100

РЕДАКТИРОВАТЬ 2 :

Чтобы иметь согласованные списки, внесите следующие изменения:

n = 2
m = 23

lat = np.arange(33.8916,34.0426,0.0033)
long = np.arange(78.0136,78.1036,0.002)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...