【问题标题】:Using python can I parallel duplicate a line of x,y,z points, so that x and z remain the same and y increases by a specified spacing?使用python我可以平行复制一行x,y,z点,使x和z保持不变,y增加指定的间距吗?
【发布时间】:2020-06-27 06:41:55
【问题描述】:

我有一条 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=[]”部分之前,它似乎工作正常。

任何帮助将不胜感激 谢谢, 卡亚

【问题讨论】:

    标签: python parallel-processing xyz


    【解决方案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 的长度。

    【讨论】:

    • 非常感谢,但它使 z1 值沿水平方向重复,而不是像我需要的那样沿垂直方向重复。我尝试将括号中的 'a' 替换为 'b' 但得到了相同的结果:对于 zip(a, b, np.ones(len(a))*c) 中的 a1、b1、c1:我明天再试一次但我认为这已经完成了一半!
    • 我设法通过将上面的行替换为:for a1, b1, c1 in zip(a, b, df.loc[df['x']==a, 'z ']):
    • 没有比你自己做的更好的了! :D
    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 2015-07-02
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多