Numpy 4x3 矩阵 LinAlgError:给定的一维数组。数组必须至少是二维的

新手上路,请多包涵

我有一个 4 x 3 系统要使用 numpy linalg.solve 来解决,但 numpy 一直抛出 LinAlgError: 1-dimensional array given. Array must be at least two-dimensional

可用的教程和问题都是针对方阵的,我不确定如何进行。

这是我的代码和矩阵:

 import numpy as np

A = np.array([[[[1/15, 1/15, 2/19],
            1/15, 2/15, 4,19],
            2/15, 2/15, 4/19],
            2/15, 2/15, 4/19])

B = np.array([0.1144807411, 0.1262803853, 0.1234210927, 0.130977131])

C = np.linalg.solve(A, B)

print(C)

哪里出错了?

原文由 Natasha Ting 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

就像 hpaulj 已经说过的,你的 A 是错误的。但是,即使您将以正确的语法编写它,您也只能在矩阵 A 是方阵(表示形状 (n,n))并且具有满秩的情况下使用 np.linalg.solve 。因为您的矩阵 A 的形状为 (4,3) np.linalg.solve 将引发 LinAlgError ,所以您需要改用 np.linalg.lstsq

 import numpy as np

A = np.array([[1/15, 1/15, 2/19], [1/15, 2/15, 4/19], [2/15, 2/15, 4/19], [2/15, 2/15, 4/19]])
B = np.array([0.1144807411, 0.1262803853, 0.1234210927, 0.130977131])
C = np.linalg.lstsq(A, B, rcond=None)[0]

原文由 joni 发布,翻译遵循 CC BY-SA 4.0 许可协议

看看你的 A 。不要只是假设你写对了。

 In [387]: A = np.array([[[[1/15, 1/15, 2/19],
     ...:             1/15, 2/15, 4,19],
     ...:             2/15, 2/15, 4/19],
     ...:             2/15, 2/15, 4/19])
     ...:
     ...:
In [388]: A
Out[388]:
array([list([[[0.06666666666666667, 0.06666666666666667, 0.10526315789473684], 0.06666666666666667, 0.13333333333333333, 4, 19], 0.13333333333333333, 0.13333333333333333, 0.21052631578947367]),
       0.13333333333333333, 0.13333333333333333, 0.21052631578947367],
      dtype=object)
In [389]: A.shape
Out[389]: (4,)
In [390]: A.dtype
Out[390]: dtype('O')

In [391]: A[0]
Out[391]:
[[[0.06666666666666667, 0.06666666666666667, 0.10526315789473684],
  0.06666666666666667,
  0.13333333333333333,
  4,
  19],
 0.13333333333333333,
 0.13333333333333333,
 0.21052631578947367]
In [392]: A[1]
Out[392]: 0.13333333333333333

原文由 hpaulj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏