行我最近发现的scipy.spatial.distance.cdist
命令是用于求解源和目的双载体的阵列之间的距离COMPLETE矩阵非常快。 看到:How can the euclidean distance be calculated with numpy? 我想尝试解决两个相同大小的阵列之间的距离时复制这些性能提升。两个SINGLE向量之间的距离是非常直接的计算,如前面的链接所示。我们可以把向量:最快的方法来计算2台使用numpy的或SciPy的向量之间的欧几里得距离
import numpy as np
A=np.random.normal(size=(3))
B=np.random.normal(size=(3))
然后用'numpy.linalg.norm'其中
np.linalg.norm(A-B)
相当于
temp = A-B
np.sqrt(temp[0]**2+temp[1]**2+temp[2]**2)
时,我想知道这可是很好地工作两组向量之间的距离,其中第二个解决方案完美地工作。在按预期:
A=np.random.normal(size=(3,42))
B=np.random.normal(size=(3,42))
temp = A-B
np.sqrt(temp[0]**2+temp[1]**2+temp[2]**2)
给我一个组的A
i
的第元件42米之间的距离向的B
的i
th元素。而norm
函数正确地计算整个矩阵的标准,给我一个不是我正在寻找的值。 与42米距离的行为是我要保持,希望用几乎一样的速度,因为我从cdist
得到解决完整矩阵什么。所以问题是什么是最有效的方式使用python和numpy/scipy来计算i
数据与形状(n,i)
之间的距离?
感谢, 斯隆
谢谢,我会配置文件,看看有多少蚊帐我的增益的,我真的很希望,有使用C的一种方式图书馆虽然进一步表现。 – SoulNibbler
奇怪的是,对于100万个元素,其实际使用np.sqrt(temp [0] ** 2 + temp [1] ** 2 + temp [2] ** 2)的速度要快3倍。 – SoulNibbler
这确实是一个意想不到的(并令人担忧的)结果......!蛇以神秘的方式工作...... ;-)。我对这是为什么很感兴趣,所以你想在这个问题上发表一个新的问题,还是我? –