python – 使用转置版本填充矩阵

前端之家收集整理的这篇文章主要介绍了python – 使用转置版本填充矩阵前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个成对矩阵:
  1. >>> m
  2. a b c d
  3. a 1.0 NaN NaN NaN
  4. b 0.5 1.0 NaN NaN
  5. c 0.6 0.0 1.0 NaN
  6. d 0.5 0.4 0.3 1.0

我想用右下角的值替换右上角的NaN:

  1. >>> m2
  2. a b c d
  3. a 1.0 0.5 0.6 0.5
  4. b 0.5 1.0 0.0 0.4
  5. c 0.6 0.0 1.0 0.3
  6. d 0.5 0.4 0.3 1.0

我可以通过交换列和索引来做到这一点:

  1. cols = m.columns
  2. idxs = m.index
  3.  
  4. for c in cols:
  5. for i in idxs:
  6. m[i][c] = m[c][i]

但是我的实际数据很慢,而且我确信有一种方法可以一步到位.我知道我可以使用“m.T”生成右上角版本,但我不知道如何用非NaN值替换NaN以获得完整的矩阵.在numpy中可能只有一步到位的方法,但我不知道矩阵代数.

解决方法

( docs)怎么样:
  1. >>> df.combine_first(df.T)
  2. a b c d
  3. a 1.0 0.5 0.6 0.5
  4. b 0.5 1.0 0.0 0.4
  5. c 0.6 0.0 1.0 0.3
  6. d 0.5 0.4 0.3 1.0

猜你在找的Python相关文章