Используя python, могу ли я параллельно дублировать линию точек x, y, z, чтобы x и z остались прежними, а y увеличился на заданный интервал? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть строка в формате x, y, z. Я хотел бы дублировать строку параллельно с увеличением значений y.

Например, у меня есть:

    x,y,z
    320300,6225380,-8.8
    320310,6225380,-8.8
    320320,6225380,-8.8

Есть около 2000 записей.

Я хотел бы создайте массив точек, такой, чтобы эта линия дублировалась, а x и z остались прежними, но с увеличением значений y, чтобы я мог сказать, продублируйте линию и увеличьте y на 10, начиная с 6225380 и заканчивая 6332640: затем пометьте x, y, z указывает на файл и экспортирует как * .csv

пример упрощенного результата ниже:

    x,y,z
    320300,6225380,-8.8
    323310,6225380,-8.8
    320320,6225380,-8.8
    320300,6225400,-8.8
    323310,6225400,-8.8
    320320,6225400,-8.8
    320300,6225410,-8.8
    323310,6225410,-8.8
    320320,6225410,-8.8

Я пробовал следующее:

import numpy as np
import pandas as pd

csv_path='PHid4_pts_6225380.csv'

df=pd.read_csv(csv_path)

sp=10
x1=df['x']
y1=np.arange(6225380,6232640,sp)
z1=df['z']

x_mesh, y_mesh =np.meshgrid(x1,y1)

coords = []
for a, b, c in  zip(x_mesh, y_mesh, z1):
    for a1, b1, c1 in zip(a, b, c):
      #  for a2, b2, c2 in zip(a1, b1, c1):
        coords.append((a1, b1, c1,))

Кажется, все работает нормально, пока я не дохожу до части'ordins = [] ', где я пытаюсь повторно использовать итератор, который я взял в другом месте.

Любая помощь будет высоко ценится Спасибо, Кая

1 Ответ

1 голос
/ 16 марта 2020

z1 является создателем проблемы здесь. Вывод строки

for a, b, c in  zip(x_mesh, y_mesh, z1)

будет массивом x, массивом y, а затем значением z1, равным -8.8 из ваших данных выборки. Таким образом, в следующей строке

 for a1, b1, c1 in zip(a, b, c):

Параметры a,b являются списками, которые могут быть zipped, но не c, потому что это просто значение, а не массив или итерация. Так что вам нужно сделать его итеративным. Например,

for a1, b1, c1 in zip(a, b, np.ones(len(b))*c):

Я только что сделал значение -8.8, чтобы повторить в массиве для длины b.

...