python - 如何加载三角矩阵并使其对称
问题描述
给定 python 中的三角矩阵m
,如何最好地从中提取行列的i
值j
?
m = [1,np.nan,np.nan,2,3,np.nan,4,5,6]
m = pd.DataFrame(np.array(x).reshape((3,3)))
看起来像:
0 1 2
0 1.0 NaN NaN
1 2.0 3.0 NaN
2 4.0 5.0 6.0
我可以轻松m[2,0]
返回较低的元素4
。
但是,如果我要求,m[0,2]
我会nan
在我想要的时候4
再次得到。
在 python 中完成此任务的最佳方法是什么?
解决方案
与转置一起使用pandas.DataFrame.fillna
:
m = m.fillna(m.T)
print(m)
输出:
0 1 2
0 1.0 2.0 4.0
1 2.0 3.0 5.0
2 4.0 5.0 6.0
m.loc[0,2] == m.loc[2,0] == 4
# True
如果有列名(如A
, B
, C
):
m.where(m.notna(), m.T.values)
输出:
A B C
0 1.0 2.0 4.0
1 2.0 3.0 5.0
2 4.0 5.0 6.0
推荐阅读
- python - ImportError:DLL 加载失败:找不到指定的模块 - PyCharm
- c# - 使用接口获取列名时如何使用表达式动态构建LINQ查询?
- java - 首都之间通过其他首都的最短路径
- php - 如何通过唯一的用户名合并多个关联数组
- jquery-ui - droppable out 事件:如何获取鼠标移动到的元素
- ms-access - 今天日期之前 11 到 12 个月的日期标准
- android - 如何在 ListView 项目单击而不是单击播放按钮上播放音频文件?
- oauth-2.0 - OAuth2中资源和客户端的区别
- jquery - 如果 UL 的高度大于 X,如何将代码附加到具有相同类的 Uls?
- java - 在 gremlin 中加入查询,组导致一对多关系