【问题标题】:Compute Euclidean distance matrix using one for-loop PYTHON [duplicate]使用一个for循环PYTHON计算欧几里得距离矩阵[重复]
【发布时间】:2021-03-09 04:35:41
【问题描述】:

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

【问题讨论】:

  • 回答第 1 部分,- 只有 numpy,- XY
  • 是的,这部分回答了我的问题。谢谢你。但是您是否也知道如何使用一个 for 循环来做到这一点?
  • 当您可以广播时,在numpy 中使用for 循环没有任何好处。 完全使用一个for 循环的限制听起来很可疑,就像一位教授试图阻止您在 SO 上寻求答案。假设是这种情况,我会给你一个面包屑 - np.ix_ 会给你两个索引列表,你可以 zip 一起做一个循环。你不应该,你没有必须,但你可以
  • 这确实是教授给我们的练习,哈哈。谢谢。

标签: python numpy for-loop euclidean-distance


【解决方案1】:

你不需要任何循环。

np.linalg.norm((X[None, :, :] - X[:, None, :]), axis=-1) 会给你矩阵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 2015-01-13
    • 2014-05-08
    • 2021-05-24
    • 2018-03-28
    • 2016-08-02
    • 2020-10-23
    相关资源
    最近更新 更多