【发布时间】:2021-09-25 06:44:26
【问题描述】:
我有一个如下形式的数组:
x_1 y_1 z_1,1
x_1 y_2 z_1,2
x_1 y_3 z_1,3
... ... ...
x_1 y_n z_1,m
x_2 y_1 z_2,1
x_2 y_2 z_2,2
x_2 y_3 z_2,3
... ... ...
x_2 y_m z_2,m
... ... ...
x_n y_m z_n,m
这是扫描数据,因此 x 和 y 坐标与该坐标处的测量值 (z)。我想将其绘制为等高线图,为此需要类似于我的np.meshgrid() 生成的数组。所以我需要以下形式的三个数组(都是形状:m行乘n列):
X = [x_1 x_2 x_3 ... x_n
x_1 x_2 x_3 ... x_n
... .
... .
... .
x_1 x_2 x_3 ... x_n]
Y = [y_1 y_1 y_1 ... y_1
y_2 y_2 y_2 ... y_2
... .
... .
... .
y_m y_m y_m ... y_m]
Z = [z_1,1 z_2,1 z_3,1 ... z_n,1
z_1,2 z_2,2 z_3,2 ... z_n,2
... .
... .
... .
z_1,m z_2,m z_3,m ... z_n,m]
注意事项:
- n 和 m 不一定相等,并且可以在扫描之间变化。
- x 和 y 步长的间距不一定要保持不变
什么是最 Pythonic 的实现方式? 有没有使用重塑的简单方法?我可以使用 for 循环来做到这一点,跟踪当前的 x 和 y 坐标并在它们发生变化时移动到新的列/行,以将值插入到数组中。但这似乎非常乏味和缓慢......
【问题讨论】:
标签: python arrays numpy reshape