我有一个成对矩阵:
>>> m
a b c d
a 1.0 NaN NaN NaN
b 0.5 1.0 NaN NaN
c 0.6 0.0 1.0 NaN
d 0.5 0.4 0.3 1.0
我想用与左下角相同的值替换右上角的NaN:
^{pr2}$我可以通过交换列和索引来实现:
cols = m.columns
idxs = m.index
for c in cols:
for i in idxs:
m[i][c] = m[c][i]
但我的数据确实很慢。我知道我可以用“m.T”生成右上角的版本,但是我不知道如何用非NaN值替换NaN来得到完整的矩阵。在numpy中可能有一个单步的方法来实现这一点,但我不知道从矩阵代数。在
这里有一种替代方法:
m[np.triu_indices_from(m, k=1)]
返回m
对角线上方的值,并将它们分配给m
转置对角线上方的值。在(docs)怎么样
使用
numpy.isnan()
:或者更好,使用
^{pr2}$panda.isnull()
:这最终相当于@DSM的解决方案!在
相关问题 更多 >
编程相关推荐