python - 在 NumPy 中计算距离矩阵的有效方法
问题描述
我有这个示例数组:
In [38]: arr
Out[38]: array([ 0, 44, 121, 154, 191])
以上只是一个示例,而我的实际数组大小非常大。那么,计算距离矩阵的有效方法是什么?
结果应该是:
In [41]: res
Out[41]:
array([[ 0, 44, 121, 154, 191],
[ -44, 0, 77, 110, 147],
[-121, -77, 0, 33, 70],
[-154, -110, -33, 0, 37],
[-191, -147, -70, -37, 0]])
我写了一个for
太慢的基于循环的实现。出于效率原因,这可以矢量化吗?
解决方案
您可以使用广播:
from numpy import array
arr = array([ 0, 44, 121, 154, 191])
arrM = arr.reshape(1, len(arr))
res = arrM - arrM.T
推荐阅读
- c - 将 printf 重定向到 fopencookie
- r - 用“at”指定时如何绘制预测边距?
- c++ - 如何从 OSX 上的 readdir 获取正确的文件名?
- postgresql - 带有 IAM 身份验证错误的 Aurora RDS Postgres?
- c# - OIDC 登录失败并显示“相关失败” - 存在 cookie 时“找不到 cookie”
- game-physics - aframe 物理 gltf 模型模型没有被解析
- android - 将 JVM 单元测试作为 Android 检测测试运行
- python - 用一组字符串重新索引熊猫系列正在删除系列中的原始数据
- python - “NoneType”对象在 BeautifulSoup 中没有属性“文本”
- azure - Azure AD Connect - 更改 sourceanchor