gpt4 book ai didi

python - 为什么 scipy.spatial.ckdtree 运行速度比 scipy.spatial.kdtree 慢

转载 作者:行者123 更新时间:2023-12-01 09:12:05 34 4
gpt4 key购买 nike

通常,scipy.spatial.ckdtree 的运行速度比 scipy.spatial.kdtree 快得多。

但就我而言,scipy.spatial.ckdtree 的运行速度比 scipy.spatial.kdtree 慢。我的代码如下:

import numpy as np
from laspy.file import File
from scipy import spatial
from timeit import default_timer as timer
inFile = File("Toronto_Strip_01.las")
dataset = np.vstack([inFile.x, inFile.y, inFile.z]).transpose()
print(dataset.shape)
start=timer()
tree = spatial.cKDTree(dataset)
# balanced_tree = False
end=timer()
distance,index=tree.query(dataset[100,:],k=5)
print(distance,index)
print(end-start)

start=timer()
tree = spatial.KDTree(dataset)
end=timer()
dis,indices= tree.query(dataset[100,:],k=5)
print(dis,indices)
print(end-start)

dataset.shape为(2727891, 3),dataset.max()为4834229.32

但是,在测试用例中,scipy.spatial.ckdtree 的运行速度比 scipy.spatial.kdtree 快得多,代码如下:

import numpy as np
from timeit import default_timer as timer
from scipy import spatial
np.random.seed(0)
A = np.random.random((2000000,3))*2000000
start1 = timer()
kdt=spatial.KDTree(A)
end1 = timer()
distance,index = kdt.query(A[100,:],k=5)
print(distance,index)
print(end1-start1)

start2 = timer()
kdt = spatial.cKDTree(A) # cKDTree + outside construction
end2 = timer()
distance,index = kdt.query(A[100,:],k=5)
print(distance,index)
print(end2-start2)

这是我的问题:在我的代码中,我需要处理数据集以加速 cKDTree 吗?

我的python版本是3.6.5,scipy版本是1.1.0,cython是0.28.4

最佳答案

也许是一个长评论;但你应该考虑如何 cKDTree parameters影响特定数据集的性能。

特别是balanced_treecompact_nodes - 如pointed out here.

关于python - 为什么 scipy.spatial.ckdtree 运行速度比 scipy.spatial.kdtree 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576736/

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