python - 使用一个for循环PYTHON计算欧几里得距离矩阵
问题描述
PYTHON
如何仅使用一个 for 循环来计算欧几里得距离矩阵。注意:只使用 Numpy,而不是其他包。
先感谢您。
这是我使用两个 for 循环的代码:
m = 10
X = np.random.randint(10, size =(m,m))
D = np.zeros((m,m), dtype = int)
for i in range(0, m):
for j in range(0, m):
v = X[i,:] - X[j,:]
D[i][j] = np.linalg.norm(v)
D
解决方案
你不需要任何循环。
np.linalg.norm((X[None, :, :] - X[:, None, :]), axis=-1)
会给你矩阵。
推荐阅读
- flask - 从浏览器调用时未创建芹菜任务,但仅在直接从 python 调用时创建
- model - 火炬服务预测模型调用问题
- browser - 浏览器如何处理二进制数据?
- hive - Oozie 调度器的编辑时间
- android - 使用 Flow 中断后重试网络调用
- sql - 合并列数不相等的表而不返回重复行
- ansible - Consecutif 命令 Ansible Playbook
- database - Sqlite3 恢复遇到内存不足错误
- php - XAMPP、友好的 URL 和 htaccess - 在实际站点上工作,无法在本地工作
- python - 创建一个循环以通过多个 URL 抓取单个值