ValueError:对象未对齐

时间:2015-07-20 19:15:12

标签: python numpy

为什么这段代码

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]]),但这也没有帮助。我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分: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)

此外,您在M1行中使用了未定义的变量np.dot

答案 1 :(得分: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()

现在有效! 谢谢你的帮助。