我有一个形状为 (l,m,n) 的数组。我正在尝试计算形状为 (l,m,n) 的距离矩阵,其中条目 (i,j,k) 是向量 (i,j,:) 和 (i,:,k) 之间的系数。我在 numpy 或 scipy 中没有找到任何符合要求的内容。
我尝试使用 for 循环并沿轴 0 迭代,然后将其提供给 scipy.spatial.distance.pdist,但这需要很长时间,因为 pdist 本身使用嵌套的 for 循环。本质上,我想要做的是沿着轴 0 执行 pdist,但理想情况下使 pdist 也不使用 for 循环......
有什么想法吗?
最佳答案
我个人会编写一个小的 Cython 函数来执行此操作( http://cython.org )。编写并测试迭代纯 Python 版本(带有 for 循环),将其移至 .pyx Cython 文件,添加类型声明并遵循 NumPy 集成指南:
http://docs.cython.org/src/tutorial/numpy.html
可能看起来像是工作,但如果您使用 Python 进行计算,一些基本的 Cython 技能非常值得培养,因为它使编写 C 扩展变得更加容易。
关于python - Numpy,3d 数组的所有成对相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689868/