2016-11-29 132 views
3

我有一個大熊貓DataFrame - 這是一個帶有頭和索引的方形矩陣,我試圖用熊貓的能力來計算矩陣的逆矩陣,而不直接通過numpy 。用熊貓計算矩陣的逆

我想留在一個熊貓框架內,以保持我的數據框的標題。我可以使用pd.as_matrix函數,但是它將它變成了一個ndarray,並且我放棄了標題提供的所有信息。

有什麼建議嗎?

回答

5

考慮數據框df

np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.rand(3, 3), list('abc'), list('xyz')) 
df 

enter image description here

計算逆(與numpy的,我們不要瘋狂)

df_inv = pd.DataFrame(np.linalg.pinv(df.values), df.columns, df.index) 
df_inv 

enter image description here

通知我用pinv FO R上的僞逆

然後檢查

df_inv.dot(df) 

enter image description here

+1

+1爲 「與numpy的,讓我們不要瘋狂」 的一部分。很多人似乎都不明白熊貓只是一個在numpy之上的簡單抽象層。 –

+0

這正是我需要的,謝謝! –

+0

我得到了使用np.linalg.pinv的第一步。但是這個結果是相反的,對嗎?那麼爲什麼我們需要下一步df_inv.dot(df)?我們在這裏檢查什麼? – TDS

0

您可以保存標題,通過您的pd.as_matrix函數獲取反轉,然後重置標題?