scipy.spatial.distance 中的cdist
时间: 2024-04-29 21:22:45 浏览: 10
cdist 是 Scipy 中的一个函数,用于计算两个集合中所有点之间的距离。它可以计算不同类型的距离,如欧几里得距离、曼哈顿距离、切比雪夫距离、余弦距离等。
具体来说,cdist 函数的输入参数为两个集合 X 和 Y,分别包含 m 和 n 个点。函数的输出是一个 m × n 的距离矩阵 D,其中第 i 行第 j 列的元素 D(i, j) 表示 X 中第 i 个点和 Y 中第 j 个点之间的距离。
例如,以下代码演示了如何使用 cdist 函数计算两个集合中所有点之间的欧几里得距离:
```python
import numpy as np
from scipy.spatial.distance import cdist
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
Y = np.array([[2, 2], [2, 3], [3, 2], [3, 3]])
D = cdist(X, Y, 'euclidean')
print(D)
```
输出结果为:
```
[[2.82842712 3.60555128 2.23606798 3. ]
[2.23606798 3. 1.41421356 2.23606798]
[2.23606798 3. 1.41421356 2.23606798]
[2.82842712 3.60555128 2.23606798 3. ]]
```
这个矩阵的每一行对应 X 中的一个点,每一列对应 Y 中的一个点,矩阵中的每个元素表示相应两个点之间的欧几里得距离。