【问题标题】:Difference between array and matrix numpy for solving linear equations用于求解线性方程的数组和矩阵 numpy 之间的区别
【发布时间】:2015-05-01 11:24:22
【问题描述】:

在相同的理由中已经提出了许多问题。 我还阅读了有关差异的官方文档 (http://www.scipy.org/scipylib/faq.html#what-is-the-difference-between-matrices-and-arrays)。但我仍然在努力理解 numpy 数组和矩阵之间的哲学差异。

更重要的是,我正在寻找以下提到结果的原因。

   #using array
>>> A = np.array([[ 1, -1,  2],
              [ 0,  1, -1],
              [ 0,  0,  1]])
>>> b = np.array([5,-1,3])
>>> x = np.linalg.solve(A,b)
>>> x
array([ 1.,  2.,  3.])

`#using matrix
>>> A=np.mat(A)
>>> b=np.mat(b)
>>> A
matrix([[ 1, -1,  2],
        [ 0,  1, -1],
        [ 0,  0,  1]])
>>> b
matrix([[ 5, -1,  3]])
>>> x = np.linalg.solve(A,b)
>>> x
matrix([[  5.,  -1.,   3.],
        [ 10.,  -2.,   6.],
        [  5.,  -1.,   3.]])

为什么表示为数组的线性方程会产生正确的解,而矩阵表示会产生另一个矩阵解。

老实说,我不明白在第二种情况下将矩阵作为解决方案的原因。

对不起,如果问题已经回答,我没有注意到,如果我对 numpy 数组和矩阵的理解是错误的,请原谅我。

【问题讨论】:

    标签: python arrays numpy matrix linear-equation


    【解决方案1】:

    你有一个转置问题......当你去矩阵土地时,列向量和行向量不再可以互换:

    import numpy as np
    
    A = np.array([[ 1, -1,  2],
                  [ 0,  1, -1],
                  [ 0,  0,  1]])
    b = np.array([5,-1,3])
    x = np.linalg.solve(A, b)
    print 'arrays:' 
    print x
    
    A = np.matrix(A)
    b = np.matrix(b)
    x = np.linalg.solve(A, b)
    print 'matrix, wrong set up:'
    print x
    
    b = b.T
    x = np.linalg.solve(A, b)
    print 'matrix, right set up:'
    print x
    

    产量:

    arrays:
    [ 1.  2.  3.]
    matrix, wrong set up:
    [[  5.  -1.   3.]
     [ 10.  -2.   6.]
     [  5.  -1.   3.]]
    matrix, right set up:
    [[ 1.]
     [ 2.]
     [ 3.]]
    

    【讨论】:

    • 现在我意识到我错了。非常感谢。答案对发球台来说是完美的。
    • @SaulloCastro 感谢您通知我。我不知道我可以接受一个答案。我是 stackoverflow.com 的新手。
    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多