【发布时间】:2010-11-18 21:23:19
【问题描述】:
我一直在使用 mplot3d(matplotlib 的一部分)进行各种 3d 绘图,它的工作表现令人钦佩。但是,我遇到了一个新问题。
Mplot3d 期望数据以某种方式排序,以绘制线框。例如,它喜欢这样的东西:
x = array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
y = array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3])
其中 z 是一个相同维度的数组,其数据对应于空间中的每个位置。
很遗憾,我的数据不是这样格式化的 - 每隔一行都颠倒过来,因为数据是通过以光栅模式扫描来收集的。
所以我有类似的东西:
x = array([[1, 2, 3],
[3, 2, 1],
[1, 2, 3]])
我目前的方法是一种非常丑陋的蛮力“做一个 for 循环然后检查你是否在奇数行中”,它从旧数组中构建了一个新数组,但我希望有一个更优雅的方式来做到这一点。棘手的部分是我必须以与 X 和 Y 相同的方式重新排列 Z 数组,以确保保留与每个点对应的数据是空间。
理想情况下,我想要一些功能强大且专门设计用于对一组包含任意随机位置点的二维数组进行排序的东西,但即使是一种更 Python 的方式来做我已经在做的事情,我也将不胜感激。如果我可以让它更健壮,并且不依赖于这种特定的光栅扫描模式,从长远来看,它可能会让我头疼。
【问题讨论】:
标签: python sorting numpy matplotlib