如何在使用阵列的Pandas中使用自差对称矩阵?

2024-04-23 19:46:32 发布

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

我有一系列的价值观。现在我想用这个级数得到一个对称矩阵。 单元格的交点应为差值

例如,该系列称为means,它如下所示:

{'Q2.1_1': 2014.764423076923,
 'Q2.1_2': 2015.7421052631578,
 'Q2.1_3': 2016.4635416666667,
 'Q2.1_4': 2015.4532019704434,
 'Q2.1_5': 2014.2727272727273,
 'Q2.1_6': 2016.320512820513,
 'Q2.1_7': 2013.525,
 'Q2.1_8': 2015.0,
 'Q2.1_9': 2015.632183908046,
 'Q2.1_10': 2013.0096618357488,
 'Q4.1_1': 2014.7339901477833,
 'Q4.1_2': 2013.1581920903955,
 'Q4.1_3': 2013.7711864406779,
 'Q4.1_4': 2013.387640449438,
 'Q4.1_5': 2015.2732919254659,
 'Q4.1_6': 2014.764705882353,
 'Q4.1_7': 2014.91452991453,
 'Q4.1_8': 2013.7643678160919,
 'Q4.1_9': 2014.4528301886792,
 'Q4.1_10': 2016.2547770700637,
 'Q4.1_11': 2011.8423913043478,
 'Q4.1_12': 2013.202380952381,
 'Q4.1_13': 2012.1944444444443,
 'Q6.1_1': 2016.6825396825398,
 'Q6.1_2': 2014.7605633802816,
 'Q8.1_1': 2013.4792899408285,
 'Q8.1_2': 2012.6614583333333,
 'Q8.1_3': 2015.4470588235295,
 'Q8.1_4': 2013.2890625,
 'Q8.1_5': 2013.8778625954199,
 'Q10.1_1': 2013.503816793893,
 'Q10.1_2': 2014.125654450262,
 'Q10.1_3': 2014.4702702702702,
 'Q12.1_1': 2011.2634146341463}

新矩阵应如下所示: Corss_tab

在这个命令之后,

pd.crosstab(index=means.index, columns=means.index, values=means.values, aggfunc=np.mean)

我可以创建正确的索引和列。但我不知道如何正确计算每个单元格的值


1条回答
网友
1楼 · 发布于 2024-04-23 19:46:32

让我们尝试将NumPy与broadcasting一起使用-

(我把你在问题中放的字典叫做^{

values = np.array(list(means.values()))[:,None]
keys = list(means.keys())

print(pd.DataFrame(np.abs(values - values.T), columns=keys, index=keys))
           Q2.1_1    Q2.1_2    Q2.1_3    Q2.1_4    Q2.1_5    Q2.1_6    Q2.1_7  \
Q2.1_1   0.000000  0.977682  1.699119  0.688779  0.491696  1.556090  1.239423   
Q2.1_2   0.977682  0.000000  0.721436  0.288903  1.469378  0.578408  2.217105   
Q2.1_3   1.699119  0.721436  0.000000  1.010340  2.190814  0.143029  2.938542   
Q2.1_4   0.688779  0.288903  1.010340  0.000000  1.180475  0.867311  1.928202   
Q2.1_5   0.491696  1.469378  2.190814  1.180475  0.000000  2.047786  0.747727   
Q2.1_6   1.556090  0.578408  0.143029  0.867311  2.047786  0.000000  2.795513   
Q2.1_7   1.239423  2.217105  2.938542  1.928202  0.747727  2.795513  0.000000   
Q2.1_8   0.235577  0.742105  1.463542  0.453202  0.727273  1.320513  1.475000   
Q2.1_9   0.867761  0.109921  0.831358  0.178982  1.359457  0.688329  2.107184   
Q2.1_10  1.754761  2.732443  3.453880  2.443540  1.263065  3.310851  0.515338   
Q4.1_1   0.030433  1.008115  1.729552  0.719212  0.461263  1.586523  1.208990 
...

相关问题 更多 >