【问题标题】:how to calculate euclidian distance of two numpy arrays by broadcasting [duplicate]如何通过广播计算两个numpy数组的欧几里得距离[重复]
【发布时间】:2020-12-05 13:45:26
【问题描述】:

我想计算两个 numpy 数组的欧几里得距离。

数组中的每一行都是一个向量。

例如

a = np.array([125, 20, 210, 55], [11, 97, 111, 71])
b = np.array([51, 19, 35, 65], [59, 80, 37, 60])

我需要计算a中每一行与b中每一行的欧几里得距离。

数组的实际大小可以大到5000行4000列。

我知道如何通过两个 for 循环和一个 for 循环来做到这一点。 我需要通过矢量化 numpy 数组来解决它。 例如将数组广播给另一个数组,例如 https://numpy.org/devdocs/user/theory.broadcasting.html

不使用

 spatial.distance.cdist

但是,我不知道该怎么做。

任何帮助将不胜感激。

【问题讨论】:

标签: python arrays numpy vector


【解决方案1】:
import numpy as np

np.sqrt((np.square(a[:,np.newaxis] - b).sum(axis=2)))

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
猜你喜欢
  • 1970-01-01
  • 2015-09-23
  • 2010-11-26
  • 2014-06-09
  • 2020-06-10
  • 2015-04-25
  • 2018-08-26
相关资源
最近更新 更多