Python Numpy,3d数组的所有成对关联
我有一个形状数组(l,m,n)。我试图计算形状(l,m,n)的距离矩阵,其中entry(I,j,k)是向量(I,j,:)和(I,:,k)之间的系数。我在numpy或scipy中没有找到符合条件的东西 我尝试使用for循环并沿轴0进行迭代,然后将其馈送到scipy.spatial.distance.pdist,但这需要很长时间,因为pdist本身使用嵌套的for循环。本质上,我想做的是在轴0下执行pdist,但理想情况下,这样pdist也不会用于循环Python Numpy,3d数组的所有成对关联,python,numpy,scipy,Python,Numpy,Scipy,我有一个形状数组(l,m,n)。我试图计算形状(l,m,n)的距离矩阵,其中entry(I,j,k)是向量(I,j,:)和(I,:,k)之间的系数。我在numpy或scipy中没有找到符合条件的东西 我尝试使用for循环并沿轴0进行迭代,然后将其馈送到scipy.spatial.distance.pdist,但这需要很长时间,因为pdist本身使用嵌套的for循环。本质上,我想做的是在轴0下执行pdist,但理想情况下,这样pdist也不会用于循环 有什么想法吗?我会亲自编写一个小Cython函
有什么想法吗?我会亲自编写一个小Cython函数来实现这一点()。编写并测试迭代纯Python版本(使用for循环),将其移动到.pyx Cython文件,添加类型声明,并遵循NumPy集成指南: 可能看起来像是一项工作,但如果您使用Python进行计算,一些基本的Cython技能非常值得培养,因为它使编写C扩展变得更加容易 有什么想法吗
pdist
的内部循环,则不应困扰您,因此可能的原因不是实现,而是所需的计算量products = numpy.einsum('ijl, ilk -> ijk')
distances = numpy.einsum('ijj -> ij', products)
distances = distances[:, :, None] + distances[:, None, :] - 2 * product