首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在pandas中使用数组制作自差对称矩阵?

如何在pandas中使用数组制作自差对称矩阵?
EN

Stack Overflow用户
提问于 2020-12-24 06:43:49
回答 1查看 30关注 0票数 0

我有一系列的价值观。现在我想在这个级数中有一个对称矩阵。单元格的交叉点应该是不同的。

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

代码语言:javascript
复制
{'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

在此命令之后,

代码语言:javascript
复制
pd.crosstab(index=means.index, columns=means.index, values=means.values, aggfunc=np.mean)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-24 07:19:59

让我们尝试在broadcasting中使用NumPy -

(我已将您在问题中输入的字典命名为means)

代码语言:javascript
复制
values = np.array(list(means.values()))[:,None]
keys = list(means.keys())

print(pd.DataFrame(np.abs(values - values.T), columns=keys, index=keys))
代码语言:javascript
复制
           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 
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65431829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档