【问题标题】:Distance Matrix in python from pandas dataset [duplicate]来自熊猫数据集的python中的距离矩阵[重复]
【发布时间】:2022-01-13 10:28:21
【问题描述】:

我有以下熊猫数据框

import pandas as pd    
df = pd.DataFrame(zip(["A","B", "C", "D"],[10,30,55,60]), columns=["Name", "Distance"])

输出:

  Name  Distance
0    A        10
1    B        30
2    C        55
3    D        60

现在,我想做一个距离矩阵,即

有谁知道如何用 python 有效地做到这一点?

【问题讨论】:

标签: python pandas


【解决方案1】:

你可以使用scipy.spatial.distance.cdist:

from scipy.spatial.distance import cdist
pd.DataFrame(cdist(df[['Distance']], df[['Distance']]),
             index=df['Name'], columns=df['Name'])

sklearn.metrics.pairwise_distances:

from sklearn.metrics import pairwise_distances
pd.DataFrame(pairwise_distances(df[['Distance']]),
             index=df['Name'], columns=df['Name'])

或者,简单地说,带有广播的原始 numpy:

a = df['Distance'].values
pd.DataFrame(abs(a-a[:,None]), index=df['Name'], columns=df['Name'])

注意。 scipy 和 sklearn 方法可以使用范围广泛的距离函数,而不仅仅是欧式距离。

输出:

Name   A   B   C   D
Name                
A      0  20  45  50
B     20   0  25  30
C     45  25   0   5
D     50  30   5   0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2019-07-09
    • 1970-01-01
    • 2020-04-14
    • 2018-11-09
    • 1970-01-01
    • 2017-04-11
    • 2017-01-26
    相关资源
    最近更新 更多