gpt4 book ai didi

python - python 2.7 和 3.5 中 scipy.spatial.KDTree 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:52 33 4
gpt4 key购买 nike

我有一个包含 x、y 坐标列表的 Pandas 数据框,我正在使用 scipy.spatial 在给定附加点的情况下找到数据框中最近的点。

import pandas as pd
import numpy as np
import scipy.spatial as spatial

stops = pd.read_csv("stops.csv")
pt = x,y
points = np.array(zip(stops['stop_lat'],stops['stop_lon']))
nn = points[spatial.KDTree(points).query(pt)[1]]

现在,在 python 2.7 中这个工作完美。在 python 3.5 中,我收到以下错误:

.../scipy/spatial/kdtree.py", line 231, in __init__
self.n, self.m = np.shape(self.data)
ValueError: not enough values to unpack (expected 2, got 0)

在文档中我找不到任何有用的东西。

最佳答案

在 Python3 中,zip() 返回 iterator object而不是元组列表。因此,points 将是一个包含 zip 迭代器的 0 维 np.object 数组,而不是 x、y 坐标的二维数组。

您可以从迭代器构造一个列表:

points = np.array(list(zip(stops['stop_lat'],stops['stop_lon'])))

但是,更优雅的解决方案可能是通过索引数据帧的多个列来避免完全使用 zip:

points = stops[['stop_lat','stop_lon']].values

关于python - python 2.7 和 3.5 中 scipy.spatial.KDTree 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437771/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com