首页 > 解决方案 > 如何加载三角矩阵并使其对称

问题描述

给定 python 中的三角矩阵m,如何最好地从中提取行列的ij

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 中完成此任务的最佳方法是什么?

标签: pythonnumpy

解决方案


与转置一起使用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

推荐阅读