0

我有一条 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 = []'部分,我试图重新使用我在其他地方拾取的迭代器。

任何帮助将不胜感激谢谢, Kaya

4

1 回答 1

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.

于 2020-03-16T06:38:44.273 回答