Скажем, я хочу рассчитать значение для каждой точки сетки. Я бы определил некоторую функцию func
, которая принимает два значения x
и y
в качестве параметров и возвращает третье значение. В приведенном ниже примере для вычисления этого значения требуется внешний вид внешнего словаря. Затем я создавал сетку точек и оценивал бы func
для каждого из них, чтобы получить желаемый результат.
Код ниже делает именно это, но несколько обходным путем. Сначала я изменяю матрицы координат X и Y в одномерные массивы, вычисляю все значения и затем перестраиваю результат обратно в матрицу. Мои вопросы: можно ли это сделать более элегантно?
import collections as c
# some arbitrary lookup table
a = c.defaultdict(int)
a[1] = 2
a[2] = 3
a[3] = 2
a[4] = 3
def func(x,y):
# some arbitrary function
return a[x] + a[y]
X,Y = np.mgrid[1:3, 1:4]
X = X.T
Y = Y.T
Z = np.array([func(x,y) for (x,y) in zip(X.ravel(), Y.ravel())]).reshape(X.shape)
print Z
Цель этого кода - создать набор значений, которые я могу использовать с pcolor
в matplotlib для создания графика типа тепловой карты.