Ошибка при запуске примера SciPy KDTree

С Scipy на Python 3.4, когда я запускаю минимальный пример KDTree, который называется здесь:

from scipy import spatial
x, y = np.mgrid[0:5, 2:8]
tree = spatial.KDTree(zip(x.ravel(), y.ravel()))

Я получаю эту ошибку:

File "C:/_work/kdtree.py", line 9, in <module>
tree = spatial.KDTree(zip(x.ravel(), y.ravel()))
File "C:\Python34\lib\site-packages\scipy\spatial\kdtree.py", line 229, in __init__
self.n, self.m = np.shape(self.data)
ValueError: need more than 0 values to unpack

Что я делаю не так? Я пытался использовать как с scipy 14.0, так и с 15.1.


person gmas80    schedule 16.02.2015    source источник


Ответы (1)


Это ошибка в строке документации. Аргумент KDTree должен быть «подобным_массиву», но в Python 3 объект, возвращаемый zip, не является «подобным_массиву». Вы можете изменить пример на

tree = spatial.KDTree(list(zip(x.ravel(), y.ravel())))

или вместо использования zip для создания входных данных для KDTree вы можете использовать, скажем, np.column_stack:

x, y = np.mgrid[0:5, 2:8]
xy = np.column_stack((x.ravel(), y.ravel()))
tree = spatial.KDTree(xy)

При любом изменении остальная часть примера должна работать.

person Warren Weckesser    schedule 17.02.2015