Я использовал mplot3d (часть matplotlib) для некоторых различных трехмерных графиков, и он выполнял работу превосходно.Однако я столкнулся с новой проблемой.
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, затем проверь, если ты в нечетной строке или нет», который строит новый массив из старого, но я надеюсь, что есть более элегантный способ сделать это,Сложность состоит в том, что мне нужно переставить массив Z таким же образом, как я делаю X и Y, чтобы гарантировать, что данные, соответствующие каждой точке, сохраняют пространство.
В идеале, я быкак что-то надежное и специально разработанное для сортировки набора двумерных массивов, которые содержат произвольные точки случайного положения, но даже более питонный способ сделать то, что я уже делаю, был бы оценен.Если бы я мог сделать его более надежным и не зависеть от этого конкретного шаблона растрового сканирования, это, вероятно, избавило бы меня от головной боли в долгосрочной перспективе.