Python scipy cdist()是否有效?
我查看了这个函数的实现,我看到它只是使用循环。我只对Python scipy cdist()是否有效?,python,performance,numpy,scipy,Python,Performance,Numpy,Scipy,我查看了这个函数的实现,我看到它只是使用循环。我只对euclidean/sqeuclidean选项感兴趣。 正如您在本文中所看到的:,这个函数的输出可以通过矩阵乘法来完成,这对我来说似乎比循环更有效 有人能帮我澄清这个问题吗 以下是实现结果输出的c代码: for (i = 0; i < mA; i++) { for (j = 0; j < mB; j++, dm++) { u = XA + (n * i); v = XB + (n * j);
euclidean/sqeuclidean
选项感兴趣。
正如您在本文中所看到的:,这个函数的输出可以通过矩阵乘法来完成,这对我来说似乎比循环更有效 有人能帮我澄清这个问题吗 以下是实现结果输出的c代码:
for (i = 0; i < mA; i++) {
for (j = 0; j < mB; j++, dm++) {
u = XA + (n * i);
v = XB + (n * j);
*dm = seuclidean_distance(var, u, v, n);
}
}
(i=0;i{
对于(j=0;j
再看一次:只有当度量是用户提供的可调用度量时(在这种情况下,唯一可能的实现是循环),才适用于循环,而不是当它是欧几里德度量之一的已知度量时。@pv谢谢,我现在就检查一下。最终答案可能是它仍然适用于循环,但是用C写的。数值稳定性是一个很好的理由,不按照你链接的文章所建议的方式做事,原因类似于为什么不使用计算方差;b=1e15,现在计算(a-b)**2和a**2+b**2-2*a*b
。惊讶您刚刚看到(缺乏)工作中的数值稳定性。因此,除非您确定这种类型的问题不会发生在您的数据集中,否则最好牺牲性能来获得正确性。