错误 运行 SciPy KDTree 示例

Error running SciPy KDTree example

在 Python 3.4 上使用 Scipy,当我 运行 最小 KDTree 示例时 here:

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

一起使用

这是文档字符串中的错误。 KDTree的参数必须是"array_like",但是在Python3中,zip返回的对象不是"array_like"。您可以将示例更改为

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

或者,您可以使用 np.column_stack:

而不是使用 zip 创建 KDTree 的输入
x, y = np.mgrid[0:5, 2:8]
xy = np.column_stack((x.ravel(), y.ravel()))
tree = spatial.KDTree(xy)

无论进行哪种更改,示例的其余部分都应该有效。