python - 计算numpy数组的所有子数组之间的相对距离
问题描述
我有一个数组:
test_arr = np.array([ [1.2, 2.1, 2.3, 4.5],
[2.6, 6.4, 5.2, 6.2],
[7.2, 6.2, 2.5, 1.7],
[8.2, 7.6, 4.2, 7.3] ]
是否可以获得以下形式的熊猫数据框:
row_id | row1 | row2 | row3 | row4
row1 0.0 d(row1,row2) d(row1,row3) d(row1,row4)
row2 ... 0.0 ... ...
row3 ... ... 0.0 ...
row4 ... ... 0.0 ...
其中是和 row2d(row1, row2)
之间的欧几里得距离。row1
我现在尝试的是首先生成所有行对的列表,然后计算距离并将每个元素分配给数据框。有没有更好/更快的方法来做到这一点?
解决方案
from scipy import spatial
import numpy as np
test_arr = np.array([ [1.2, 2.1, 2.3, 4.5],
[2.6, 6.4, 5.2, 6.2],
[7.2, 6.2, 2.5, 1.7],
[8.2, 7.6, 4.2, 7.3] ])
dist = spatial.distance.pdist(test_arr)
spatial.distance.squareform(dist)
结果:
array([[0. , 5.63471383, 7.79037868, 9.52365476],
[5.63471383, 0. , 6.98140387, 5.91692488],
[7.79037868, 6.98140387, 0. , 6.1 ],
[9.52365476, 5.91692488, 6.1 , 0. ]])
推荐阅读
- sql - 触发器在另一个表中创建或更新记录
- kubernetes - 有没有办法为 CPU pod 禁用 GPU?
- python - 如何摆脱异常类:NoneType?
- java - 如何始终使用 HttpServletRequestWrapper?
- mongodb - 使用 Mongoose 在 MongoDB 中查询多个属性
- python - 使用列表创建 excel 范围
- c++ - 只初始化一次非静态局部变量
- javascript - 如何在 img“src”属性 HTML 中显示二进制图像
- javascript - React - ES6 - this 关键字和箭头函数
- java - 为什么我在解析 YAML 块时出现此错误?