Mam parami matrycy:matryca Fill z transponowana wersji
>>> 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
Chcę wymienić NaN w prawym górnym rogu z tymi samymi wartościami jak w lewym dolnym rogu:
>>> m2
a b c d
a 1.0 0.5 0.6 0.5
b 0.5 1.0 0.0 0.4
c 0.6 0.0 1.0 0.3
d 0.5 0.4 0.3 1.0
I można to zrobić, zamieniając kolumny i indeksy:
cols = m.columns
idxs = m.index
for c in cols:
for i in idxs:
m[i][c] = m[c][i]
Ale to jest powolne z moich rzeczywistych danych, i jestem pewien, że jest sposób, aby to zrobić w jeden krok. Wiem, że mogę wygenerować wersję górną prawą z "m.T", ale nie wiem jak zastąpić NaN wartościami innymi niż NaN, aby uzyskać kompletną macierz. Prawdopodobnie jest to jeden krok w numpy, ale nie wiem z algebry macierzy.