我觉得这应该很简单,但我坚持寻找一个简洁的解决方案。我提供的代码有效,并给出了我期望的输出,但我不觉得它是 Pythonic,它让我很紧张。
我使用基础数据集中的“griddata”生成了三组坐标 X、Y 和 Z。坐标在未知的总面积/形状(不一定是正方形/矩形)上均匀分布,产生 NaN 结果,我想忽略每个列表的边界。列表应该从“左下角”(在坐标系中)穿过 x 轴,在 y 方向上向上一个空间,然后从右到左,然后再继续。可能有奇数或偶数行。
无论方向如何,对每个点执行的操作都是相同的,并保证存在于 X 中的每个点都存在于 Y 和 Z 中,如下面的代码所示。
数组(列表?)的格式为 DataPoint[rows][columns]。
k = 0
for i in range(len(x)):
if k % 2 == 0: # cut left to right, then right to left
for j in range(len(x[i])):
if not numpy.isnan(x[i][j]):
file.write(f'X{x[i][j]} Y{y[i][j]} Z{z[i][j]}')
else:
for j in reversed(range(len(x[i]))):
if not numpy.isnan(x[i][j]):
file.write(f'X{x[i][j]} Y{y[i][j]} Z{z[i][j]}')
k += 1
我能想到的一种解决方案是在运行循环之前反转每个列表中的每隔一行。它会为我节省几行代码,但从性能的角度来看可能没有意义 - 有人有更好的建议吗?
通过列表的预期路线:
End════<══════╗
╔══════>══════╝
╚══════<══════╗
Start══>══════╝