【问题标题】:Create adjacency matrix from array and its transpose从数组及其转置创建邻接矩阵
【发布时间】:2018-11-27 11:42:36
【问题描述】:

我有一个这样的熊猫数据框:

我想创建一个像这样的对称矩阵:

这里的值实际上是两个列表相交的长度。因此我做了这个功能:

 def intersectSize(l1, l2):
     return len(set(l1) & set(l2))

有没有类似这个的功能:

def createSymMatrix(array, func):
    ...
    return matrix

array 是我的初始数据框,funcintersectSize 函数?

编辑: 用这两条线弄清楚了:

array = [[len(set(l1)&set(l2)) for l1 in df]] for l2 in df]
adj = pd.DataFrame(data=array, index=df.index, columns=df.index)

【问题讨论】:

    标签: python pandas numpy adjacency-matrix


    【解决方案1】:

    我认为你需要这个,

    r=[]
    for val in list(itertools.product(df[0].values,df[0].values)):
        r.append( len(set(val[0])&set(val[1])) )
    print pd.DataFrame(np.array(r).reshape(len(df),-1))
    

    使用列表理解:

    t= [len(set(val[0])&set(val[1])) for val in list(itertools.product(df[0].values,df[0].values))]
    print pd.DataFrame(np.array(t).reshape(len(df),-1))
    

    输出:

       0  1  2  3
    0  3  0  0  1
    1  0  1  0  1
    2  0  0  2  0
    3  1  1  0  2
    

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多