【问题标题】:How to compare each row of vectors of numpy array to itself and every element如何将numpy数组的每一行向量与其自身和每个元素进行比较
【发布时间】:2021-05-21 05:38:00
【问题描述】:

我有一个包含矢量化数据的 numpy 数组。我需要比较这些向量中的每一个(数组中的一行)与自身和每隔一行的欧几里得距离。

向量的形式为

[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]]

我知道我需要两个循环,这是我目前所拥有的

def euclidean_distance_loop(termdoc):
    i = 0
    j = 0
    matrix = np.array([])
    while( j < (len(termdoc-1))):
        matrix = np.append(matrix,[euclidean_distance(termdoc[i],termdoc[j])])
        j = j + 1
        
    return np.array([matrix])

euclidean_distance_loop(termdoc)

我知道这是一个索引问题,我需要另一个索引或另一个循环中的递增索引,但不知道如何构造它

【问题讨论】:

  • 您能否提供数据样本和预期结果?这个问题会更容易理解
  • 数据是逐个文档的矩阵,其中每一行都是一个向量。该函数是获取每一行并将 row[0] 与自身和所有其他行进行比较,然后将 row[1] 与所有行及其自身进行比较,row[2] 与所有其他行及其自身进行比较。我的问题是我不知道如何更新我认为的外部和内部循环的索引

标签: python numpy


【解决方案1】:

你不需要循环。

def self_distance(x):
    return np.linalg.norm(x[:,np.newaxis] - x, axis=-1)

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多