np.power(np.sum(np.abs(x-y)**p),1/p)
时间: 2023-12-02 18:05:33 浏览: 50
Python数据科学速查表 - Numpy 基础.pdf
这段代码是用来计算 $x$ 和 $y$ 两个向量之间的 $L_p$ 距离的。
其中 $p$ 表示距离的阶数,如果 $p=1$,则表示曼哈顿距离;如果 $p=2$,则表示欧几里得距离。
具体的计算方法是,首先计算两个向量每个维度上的差值的绝对值的 $p$ 次方,然后将这些差值的绝对值的 $p$ 次方相加,再将结果的 $1/p$ 次方即可得到 $L_p$ 距离。
例如,如果 $x=[1,2,3], y=[4,5,6]$,且 $p=2$,那么:
$$\begin{aligned} &\text{distance}(x,y) \\ =&\ \sqrt{\sum_{i=1}^3 |x_i-y_i|^2} \\ =&\ \sqrt{(1-4)^2 + (2-5)^2 + (3-6)^2} \\ =&\ \sqrt{27} \\ \end{aligned}$$
因此,$\text{np.power(np.sum(np.abs(x-y)**p),1/p)}$ 就等于 $\text{distance}(x,y)$。
阅读全文