array 和 matrix numpy 求解线性方程组的区别
Difference between array and matrix numpy for solving linear equations
相同的理由已经问了很多问题。
我还阅读了有关差异的官方文档 (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 数组和矩阵的理解有误,请原谅我。
你有一个转置问题...当你转到矩阵域时,列向量和行向量不再可以互换:
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.]]
相同的理由已经问了很多问题。 我还阅读了有关差异的官方文档 (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 数组和矩阵的理解有误,请原谅我。
你有一个转置问题...当你转到矩阵域时,列向量和行向量不再可以互换:
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.]]