Используя python, могу ли я параллельно дублировать линию точек x,y,z, чтобы x и z оставались одинаковыми, а y увеличивался на заданный интервал?
У меня есть строка в формате 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,))
Кажется, он работает нормально, пока я не дойду до части 'coords=[]', где я пытаюсь повторно использовать итератор, который я взял в другом месте.
Любая помощь будет принята с благодарностью, спасибо, Кая
1 ответ
В 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
.