无缝解决方形线性系统,可以是一维的numpy

时间:2017-08-14 20:55:06

标签: python arrays numpy

我正在解决线性方程组Ax=b。 众所周知,A是正方形且满级,但它是一些矩阵乘法的结果,比如A = numpy.dot(C,numpy.dot(D,E)),其中结果可以是1x1,具体取决于输入{{ 1}}。在这种情况下,C,D,EA

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,它也会抱怨。

我错过了一些替代方案吗?

2 个答案:

答案 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从来就不应该是浮动的,你应该修改导致它成为一个浮动的东西。