我有一個矩陣
import numpy as np
A = np.array([[.7,.2,.1],[0,.6,.4],[.5,0,.5]]);A
我想做一個計算平穩性的函式:
def statdist(A):
m = A.shape[0]
s = (m,m)
I = np.identity(3)
return( np.ones(m)@np.linalg.inv(I)- A np.ones(s))
statdist(A)
結果必須是
0.4761905 0.2380952 0.2857143
但是python的輸出是一個矩陣:
array([[1.3, 1.8, 1.9],
[2. , 1.4, 1.6],
[1.5, 2. , 1.5]])
我做錯了什么?
在 R 中很簡單:
statdist <- function(gamma){
m = dim(gamma)[1]
matrix(1,1,m) %*% solve(diag(1,m) - gamma matrix(1,m,m))
}
i = matrix(c(.7,.2,.1,0,.6,.4,.5,0,.5),3,3,byrow = TRUE);i
statdist(i)
uj5u.com熱心網友回復:
A 是 (3,3)
m = A.shape[0] # 3
s = (m,m)
I = np.identity(3) # (3,3)
return( np.ones(m)@np.linalg.inv(I)- A np.ones(s))
在最后一行
(3,) @ (3,3) => (3,3)
(3,3) - (3,3) (3,) => (3,3)
哎呀
(3,) @ (3,3) => (3,)
(3,) - (3,3) (3,3) => (3,3)
建議的更改
np.ones(m)@np.linalg.inv(I- A np.ones(s))
(3,3)-(3,3) (3,3) => (3,3)
(3,) @ (3,3) => (3,)
用數字:
In [621]: A = np.array([[.7,.2,.1],[0,.6,.4],[.5,0,.5]])
In [622]: np.ones(3)@np.linalg.inv(np.eye(3)- A np.ones((3,3)))
Out[622]: array([0.47619048, 0.23809524, 0.28571429])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420098.html
標籤:
上一篇:在python中查找2個多維陣列之間的minkowski距離
下一篇:用于簡單計算的大量dask任務
