我正在解决线性方程组Ax=b
。
众所周知,A
是正方形且满级,但它是一些矩阵乘法的结果,比如A = numpy.dot(C,numpy.dot(D,E))
,其中结果可以是1x1
,具体取决于输入{{ 1}}。在这种情况下,C,D,E
是A
。
float
确保为矢量,即使它是b
矢量。
我正在做
1x1
我搜索了numpy的文档,并没有找到A = numpy.dot(C,numpy.dot(D,E))
try:
x = numpy.linalg.solve(A,b)
except:
x = b[0] / A
和solve
的其他替代方法,它们会接受第一个或第二个输出数组的标量。实际上dot
要求维度至少为2.如果我们要生成numpy.linalg.solve
,它也会抱怨。
我错过了一些替代方案吗?
答案 0 :(得分:1)
其中结果可以是1x1,具体取决于输入C,D,E。在这种情况下,A是一个浮动。
这不是真的,它是一个1x1矩阵,正如预期的那样
x=np.array([[1,2]])
z=x.dot(x.T) # 1x2 matrix times 2x1
print(z.shape) # (1, 1)
适用于linalg.solve
linalg.solve(z, z) # returns [[1]], as expected
答案 1 :(得分:1)
虽然您可以扩展A
的维度:
A = numpy.atleast_2d(A)
听起来A
从来就不应该是浮动的,你应该修改导致它成为一个浮动的东西。