获取linalg错误::给出1维数组。数组必须至少是二维的

时间:2015-10-16 05:58:23

标签: arrays python-3.x matrix gaussian

a = array([[2*R0*(Q0**2), 2*R1*(Q1**2), 2*R2*(Q2**2), 2*R3*(Q3**2), 2*R4*(Q4**2), 0, 0, 0],
       [0, 0, 0, 2*R3*(Q3**2), 2*R4*(Q4**2), 0, 0, 0], [0, 2*R1*(Q1**2),0, 0, 0,  2*R5*(Q5**2), 2*R6*(Q6**2), 2*R7*(Q7**2)], [1, 1, 0, 0, 0, 0, 1], [0, 1, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0, 0],
       [0, 0, 0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1, 1]])

b = array([[95-(R0*(Q0**3))-(R1*(Q1**3))-(R2*(Q2**3))-(R3*(Q3**3))-(R4*(Q4**3))], [-(R4*(Q4**3))-(R3*(Q3**3))],
        [-(R6*(Q6**3))-(R7*(Q7**3))-(R1*(Q1**3))-(R5*(Q5**3))], [-Q0+Q1+Q6], [0.6-Q1+Q2+Q5], [-Q2+Q3+Q4], [1.4-Q7-Q5], [Q7-Q6]])

p = solve(a, b)

print ("deltaQ:", p)

求解(a,b)是一个高斯约旦消除函数,它解决了R0-R7和Q0-Q7是常数的线性方程!它适用于其他矩阵,但是对于这个矩阵我得到了一个错误。

2 个答案:

答案 0 :(得分:1)

数组a没有一致的行,因此numpy将数组初始化为包含不同“对象”而不是2D数组的1D数组。

>>>> print(a.dtype)
object

因此错误抱怨没有2D阵列而只有1D。

答案 1 :(得分:0)

当我遇到这个问题时,它是关于作为稀疏矩阵的拉普拉斯矩阵的特征向量生成。我不得不使用laplacian_matrix.todense()函数(laplacian_matrix来自包networkx),异常得到解决。