Python 计算点间欧氏距离时的内存错误

Python 计算点间欧氏距离时的内存错误,python,numpy,cluster-analysis,dbscan,Python,Numpy,Cluster Analysis,Dbscan,我想找到DBSCAN的eps。 我有一组点,需要计算从每个点到另一点的距离。如果形状数组为(2267436,2),则找到near和minpoint。 以下是我的数据: xy= [[ 177963.16728699 2506663.75713195] [ 176147.50406716 2502422.34894945] [ 178480.33178874 2507299.83467826] ..., [ 231205.88139267 2684014.30324774]

我想找到DBSCAN的eps。 我有一组点,需要计算从每个点到另一点的距离。如果形状数组为(2267436,2),则找到near和minpoint。 以下是我的数据:

xy= [[  177963.16728699  2506663.75713195]
 [  176147.50406716  2502422.34894945]
 [  178480.33178874  2507299.83467826]
 ..., 
 [  231205.88139267  2684014.30324774]
 [  231207.81085397  2684014.52219471]
 [  231214.870296    2684054.8263628 ]]
我正在尝试以下方法:

dist = scipy.spatial.distance.cdist(xy, xy,'euclidean')

我得到了所有人的回忆。
有什么办法可以解决这个问题吗?

通过一些非常简单的数学运算,你可以发现你不能在内存中存储所有的O(n²)距离

如果一次只计算一个点的距离,就可以了

此外,尝试使用索引将运行时间从O(n²)减少到可管理的范围


或者使用更现代的算法,如光学。

有2267436个选择2=2570631873330(超过2.5万亿)个不同的点对,一个简单的距离矩阵将有超过5万亿个条目。也许你应该重新考虑一下你的算法。@FenilPatel请再读一遍这个问题,重新考虑一下“knear”是否真的是一个拼写错误,或者它是否指的是。如果在编辑之后你仍然不理解一个人的意思,首先不要编辑。是的!如果我只计算一个点,就可以了!但这是我的论文,我必须弄清楚,现在我使用arcmap工具,如点距离和近距离,这将需要很多时间,但不会得到记忆错误,也许当我起床时,它会好起来!无论如何,谢谢!
np.sqrt((np.square(npxy[:,np.newaxis]-npxy).sum(axis=2)))
dist=scipy.spatial.distance.pdist(npxy)
d_matrix = scipy.spatial.distance.squareform(dist)