Я пытаюсь использовать метод griddata в Scipy для выполнения бикубической интерполяции по набору данных. Однако каждый раз, когда я пытаюсь, я получаю буфер ValueError, а не C непрерывный.Метод griddata Scipy всегда сбой
Странная вещь, что я бегу пример алгоритма, который они дают, и он до сих пор не удается:
def func(x, y):
return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2
def bicubic():
grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]
points = np.random.rand(1000, 2)
values = func(points[:,0], points[:,1])
data = griddata(points, values, (grid_x, grid_y), method='cubic')
return data
Трассировка стека является:
Traceback (most recent call last):
File "parser.py", line 135, in <module>
ZI = bicubic(xv,yv,values,gridx,gridy)
File "/Users/Velox/Dropbox/Uni/Masters Project/Data/OpenSense/bicubic.py", line 14, in bicubic
return griddata(points, values, (grid_x, grid_y), method='cubic')
File "/Library/Python/2.7/site-packages/scipy/interpolate/ndgriddata.py", line 187, in griddata
ip = CloughTocher2DInterpolator(points, values, fill_value=fill_value)
File "interpnd.pyx", line 803, in scipy.interpolate.interpnd.CloughTocher2DInterpolator.__init__ (scipy/interpolate/interpnd.c:8584)
File "interpnd.pyx", line 478, in scipy.interpolate.interpnd.estimate_gradients_2d_global (scipy/interpolate/interpnd.c:6644)
ValueError: Buffer not C contiguous.
Варианты Numpy и SciPy являются 1.8.0.dev-665a00a
и 0.13.0.dev-61f05fe
соответственно.
Есть ли у кого-нибудь идеи, что происходит не так?
Так что кажется, что версия scipy и numpy, что у меня была, устарела. Обновление этих библиотек решило проблему. Версии теперь '1.8.0' и' 0.13.3'. –
Да, лучше использовать выпущенные версии, а не (устаревшие) версии разработки, так как первые лучше тестируются друг против друга. –
Определенно. Я был уверен, что у меня есть. Оказывается, это был конфликт между версией, установленной с помощью homebrew pip, и старой версией, установленной с пипом на python по умолчанию, который поставляется с OS X. –