Сортировка массива по двум измерениямPython

Программы на Python
Ответить
Anonymous
 Сортировка массива по двум измерениям

Сообщение Anonymous »

Предположим, у вас есть данные в виде цифрового массива формы (100,3). Число 100 представляет количество датчиков, для каждого датчика у вас есть:
  • координата x (data[:, 0])
  • координата y (data[:, 1])
  • чтение, например. температура (data[:, 2])
Датчики расположены не по регулярной сетке. Как я могу отсортировать массив данных так, чтобы координаты x и y сортировались последовательно? Вот пример:
import numpy as np
import matplotlib.pyplot as plt

data = np.random.uniform(-1, 1, size=(100, 3))
x_pos = data[:, 0]
y_pos = data[:, 1]
temperature = data[:, 2]

sorted_ind = np.lexsort((y_pos, x_pos))
sorted_data = data[sorted_ind]

plt.plot(sorted_data[:, 0]) #plot x positions
plt.plot(sorted_data[:, 1]) #plot y positions

Насколько я понимаю, обе координаты теперь должны быть в порядке возрастания, но это верно только для позиции x.
РЕДАКТИРОВАТЬ: Цель состоит в том, чтобы отобразить данные в сетке (которая не обязательно должна быть регулярной, но отсортированной правильно). Итак, представьте себе, что датчики температуры почти равномерно распределены где-то на квадратной площади. Но если я прочитаю точные координаты GPS, это не будет идеально ровная сетка.
img = data.reshape(10,10,3)
plt.imshow(img[:, :, 2]) #should display the temperature correcly positioned on a grid
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»