Ваш вопрос не имеет ничего общего с тепловой картой, это вопрос изменения формы данных.
Из вашего вопроса я понимаю, что каждая точка в плоскости (x, y) имеет несколько соответствующих координат z.
Вам необходимо вычислить ваши интенсивности (средние концентрации) в двумерном массиве в соответствии с различными значениями x и y. Для этого нужно выполнить 4 шага:
- определить точки координат (x, y) с помощью ==
- преобразовать его в одномерный массив с помощью numpy.prod
(перевести как «и»)
- извлечь соответствующие концентрации numpy.extract
- вычислить среднее значение с помощью numpy.mean
Вы не можете избежать итерации по точкам.
Я пробовал это со случайными значениями, и кажется, работа:
import numpy as np
import matplotlib.pyplot as plt
l = 5000
points = np.random.random_integers(0, 10, (l,3))
plane_points = points[:, 0:2]
cc = np.random.random(l)
intensity = np.zeros((11,11))
grid = np.arange(11)
for i in grid :
for j in grid :
intensity[i, j] = np.mean( np.extract( np.prod( plane_points == [i,j], axis=1 ), cc) )
x_mesh,y_mesh = np.meshgrid(grid, grid)
plt.pcolormesh(x_mesh,y_mesh, intensity)
plt.colorbar()
plt.show()