因為問題解決了,所以自回一下
感謝KSJ大的提醒,確實是因為matrix的資料型態有問題
將其轉換為float就可以算了,相關程式碼如下:
import pandas as pd
import numpy as np
data = pd.read_csv('../MQ35/20140101_20170728.csv')
cS = np.delete(data.as_matrix(), 0, 1)
y = np.vstack(cS[1:, :]).astype(np.float)
x = np.vstack(cS[:-1, :]).astype(np.float)
np.linalg.inv(np.dot(x.T, x)
※ 引述《sonicstars (昊旱)》之銘言:
: 各位前輩大家好
: 我利用numpy.linalg.inv求算反矩陣的時候遇到了無法求解的問題
: 我的matrix名稱為betai,其數值如下
: [[3935.3477999999996 2495.1955999999996 1586.1095]
: [2495.1955999999996 1582.2803999999999 1005.8091999999998]
: [1586.1095000000000 1005.8091999999998 639.3906]]
: matrix的其他資訊
: https://imgur.com/Db0cwTO
: 然後會跳這個錯誤訊息
: https://imgur.com/x8LClWD
: https://imgur.com/6PbCMm2
: 在爬版之後原本以為與這位的問題差不多
: https://www.ptt.cc/bbs/Python/M.1466588274.A.BAD.html
: 使用這位先進的解法
: https://www.ptt.cc/bbs/Python/M.1466650959.A.B2B.html
: 撰寫程式碼:
: betai = numpy.dot(x.T, x)
: IMatrix = numpy.eye(betai.shape[1])
: B = IMatrix - betai
: binv = numpy.linalg.solve(betai, B)
: 則是跳出這樣的錯誤訊息
: https://imgur.com/jIObslM
: https://imgur.com/bup14A9
: 請問我是否漏了什麼?是否有其他的方法可以求反矩陣?