Python griddata meshgrid - PullRequest
       31

Python griddata meshgrid

1 голос
/ 15 июня 2011

в Python Я хочу интерполировать некоторые данные с помощью scipy.interpolate.griddata (x, y, z, xi, yi).

Поскольку я хочу, чтобы мои неравные разнесенные исходные данные на карте сетки X-Y находились на сетке равных интервалов XI-YI, я должен использовать сетку как:

X, Y = numpy.meshgrid([1,2,3], [2,5,6,8])
XI,YI = numpy.meshgrid([1,2,3],[4,5,6,7])
print scipy.interpolate.griddata(X,Y,X**2+Y**2,XI,YI)

К сожалению, похоже, что данные сетки scipys не принимают матрицы в качестве входных данных для x, y, z, в отличие от функции griddata в matlab. У кого-нибудь есть подсказка для меня, как решить проблему?

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

В вашем случае правильная последовательность вызовов:

print scipy.interpolate.griddata((X.ravel(),Y.ravel()), (X**2+Y**2).ravel(), (XI, YI))

Т.е. вам необходимо привести точки входных данных к 1-му.(Это может быть исправлено для работы без .ravel() s в следующей версии Scipy.)

0 голосов
/ 15 июня 2011

Я думаю, вам нужно изменить сетку, griddata ожидает список точек с координатами в виде столбца:

points = transpose(reshape((X,Y), (2,12)))
pointsI = transpose(reshape((XI,YI), (2,12)))
Z = reshape(X**2+Y**2, 12)

print scipy.interpolate.griddata(points, Z, pointsI)
...