从数组及其转置生成邻接矩阵

2024-09-29 21:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:
enter image description here

我想创建一个对称矩阵如下:
enter image description here

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

 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)

Tags: 数据函数inl1dfforindexlen
1条回答
网友
1楼 · 发布于 2024-09-29 21:56:48

我想你需要这个

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

相关问题 更多 >

    热门问题