首页 > 解决方案 > 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)

哪里出错了?

标签: arrayspython-3.xnumpylinear-algebra

解决方案


看看你的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

推荐阅读