2015-07-20 43 views
0

爲什麼這個代碼ValueError異常:對象不對齊

def fun(t1,t): 
    v = np.array([t,t1]) 
    M = np.matrix([[0,0],[0,0]]) 
    a = np.dot(scipy.linalg.expm(M, q=0),v) 
    return a[0] 
x = np.linspace(0,10,201) 
y = np.linspace(10,0,201) 
X,Y = np.meshgrid(x, y) 
im = pl.imshow(fun(X,Y),cmap=cm.RdBu) 
show() 

給我的錯誤「ValueError異常:對象不對齊」? 我試圖寫我的載體爲v= np.array([[t],[t1]])但這也沒有幫助。我究竟做錯了什麼?

謝謝!

+0

在哪條線上出現此錯誤? – kvorobiev

+0

告訴我們線條,以及有問題的物體的形狀。 (錯誤代碼: – hpaulj

+0

)錯誤在'a = np.dot(sp.linalg.expm(M,q = 0),v)' ValueError:形狀(2,2)和(2,201,201)未對齊:2 )!= 201(dim 1) – Odile

回答

2

貌似這裏

a = np.dot(scipy.linalg.expm(M1, q=0),v) 

你試圖把兩個數組不兼容的尺寸之間的點積。
此行

a = np.dot(scipy.linalg.expm(M1, q=0),v) 

變量v之前有大小

v.shape 
Out[16]: (2, 201, 201) 

矩陣M

M.shape 
Out[18]: (2, 2) 

此外,您在np.dot行中使用未定義的變量M1

+0

謝謝,M1應該是M的確。我如何定義我的向量,使它只是(2,1)? – Odile

+0

@Odile SmitsSo我可以回答你的問題,請告訴我你想做什麼在這行'x = np.linspace(0,10,201) y = np.linspace(10,0,201) X,Y = np.meshgrid (x,y)'? – kvorobiev

+0

我剛剛定義了一個網格操作點。也可以是這樣的:'x = arange(-3.0,3.0,0.1),y = arange(-3.0,3.0,0.1)'感謝您的幫助! – Odile

1

爲了克服我重寫了代碼的錯誤:

def corrm(t1,t): 
    v = np.array([t1,t]) 
    M = np.matrix([[0,0],[0,0]]) 
    a = np.dot(sw.expm(M, q=0),v) 
    return a[0] 

points = 50 
k = [] 
x = np.linspace(-3.0,3.0,points) 
y = np.linspace(-3.0,3.0,points) 
for i in x: 
    for j in y: 
     k.append([corrm(i,j)]) 
k = np.reshape(k,(points,points)) 
X,Y = meshgrid(x, y) # grid of point 
imshow(k,cmap=cm.RdBu) 

show() 

它現在! 感謝您的幫助球員。