np.diag(数组,k)
- 返回一维数组作为对角线的矩阵
- 返回二维矩阵的对角线
- k为正整数是对角线以上的元素列表
- k为负整数是对角线以下的元素列表
np.trace
- 对角线元素的和
np.linalg.det(数组)
- 数组的行列式
- 数组必须是方阵
np.linalg.eig(数组)
- 数组的特征值和特征向量
- 数组必须是方阵
np.linalg.inv(数组)
- 数组的逆
- 数组必须是非奇异方阵
np.linalg.pinv(数组)
- 数组的伪逆
np.linalg.svd(数组)
- 数组的奇异值分解
import numpy as np
d=np.random.randn(3,3)
print('2维方阵:\n',d)
print('d的对角线:\n',np.diag(d))
print('d的对角线以上的第一个元素列表:\n',np.diag(d,1))
print('d的对角线以下的第二个元素列表:\n',np.diag(d,-2))
print('d的对角线对应的对角矩阵:\n',np.diag(np.diag(d)))
print('d的对角线元素的和:\n',np.trace(d))
print('d矩阵的行列式:\n',np.linalg.det(d))
print('d矩阵的特征值和特征向量:\n',np.linalg.eig(d))
print('d矩阵的逆:\n',np.linalg.inv(d))
print('d矩阵的伪逆:\n',np.linalg.pinv(d))
print('d矩阵的QR分解:\n',np.linalg.qr(d))
print('d矩阵的奇异值分解:\n',np.linalg.svd(d))
print('d矩阵的奇异值分解:\n',np.linalg.solve(d))
runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')
2维方阵:
[[-0.92124509 0.09588448 -0.50192459]
[ 0.60636215 2.32003121 0.11376364]
[ 0.25025469 1.22494175 -0.15661284]]
d的对角线:
[-0.92124509 2.32003121 -0.15661284]
d的对角线以上的第一个元素列表:
[0.09588448 0.11376364]
d的对角线以下的第二个元素列表:
[0.25025469]
d的对角线对应的对角矩阵:
[[-0.92124509 0. 0. ]
[ 0. 2.32003121 0. ]
[ 0. 0. -0.15661284]]
d的对角线元素的和:
1.24217328391547
d矩阵的行列式:
0.39355387405711695
d矩阵的特征值和特征向量:
(array([ 2.34783037, -0.9243052 , -0.18135189]), array([[ 0.04052868, -0.98275096, -0.55029394],
[-0.89916127, 0.18266136, 0.09567255],
[-0.43573665, 0.02890288, 0.82947173]]))
d矩阵的逆:
[[-1.27733593 -1.52409032 2.98660225]
[ 0.31363935 0.68577089 -0.50703065]
[ 0.41203918 2.92835923 -5.57854522]]
d矩阵的伪逆:
[[-1.27733593 -1.52409032 2.98660225]
[ 0.31363935 0.68577089 -0.50703065]
[ 0.41203918 2.92835923 -5.57854522]]
d矩阵的QR分解:
(array([[-0.81459317, -0.5763499 , -0.06525914],
[ 0.53616401, -0.70528095, -0.46379623],
[ 0.22128288, -0.41279484, 0.88353512]]), array([[ 1.1309266 , 1.43686904, 0.43520458],
[ 0. , -2.19718646, 0.27369783],
[ 0. , 0. , -0.15838092]]))
d矩阵的奇异值分解:
(array([[-0.05856018, -0.98852338, -0.13925597],
[ 0.88625772, 0.0127246 , -0.46301765],
[ 0.45947575, -0.15053108, 0.87534132]]), array([2.70775756, 1.05338758, 0.13797685]), array([[ 0.26085325, 0.96513869, 0.02151481],
[ 0.8360806 , -0.23700146, 0.4947722 ],
[ 0.48262284, -0.11107482, -0.86875634]]))
np.dot(m,n)
- 矩阵m与n的乘积
- 结果矩阵的结构:(m的轴1,m的轴2,…,m的倒数第二个轴,n的最后一个轴)
- n的第一个轴必须等于m的第二个轴
import numpy as np
d=np.arange(6).reshape(3,1,2)
e=np.random.randn(2,1).round(2)
print('d:\n',d)
print('e:\n',e)
print('d与e的乘积:\n',np.dot(d,e))
runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')
d:
[[[0 1]]
[[2 3]]
[[4 5]]]
e:
[[1.22]
[0.06]]
d与e的乘积:
[[[0.06]]
[[2.62]]
[[5.18]]]
np.linalg.solve(数组a,数组b)
- 对ax=b求解
- a必须为非奇异方阵
- b从倒数第二个轴开始依次往前推,至少有‘a的轴数-1’个轴与a的轴相等
(eg:a(2,2,2,2),那么b从倒数第二个轴开始,至少有3个轴都是2,如b(3,2,2,2,1))
import numpy as np
d=np.random.randn(3,3)
e=np.arange(6).reshape((2,3,1))
print('d:\n',d)
print('e:\n',e)
print('dx=e的解:\n',np.linalg.solve(d,e))
runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')
d:
[[-0.3237826 -0.05781436 0.07139472]
[-0.91090948 -0.56127665 -0.7013948 ]
[ 0.29241977 0.34431695 0.67803068]]
e:
[[[0]
[1]
[2]]
[[3]
[4]
[5]]]
dx=e的解:
[[[ 21.42874057]
[ -78.53166452]
[ 33.58785425]]
[[ 22.95557104]
[-112.81978454]
[ 54.76610745]]]
np.linagl.lstsq(数组a,数组b)
- 对ax=b求最小二乘解
- a、b必须都是二维矩阵,且每个轴的维度要相等
import numpy as np
d=np.random.randn(2,3)
e=np.arange(6).reshape(2,3)
print('d:\n',d)
print('e:\n',e)
print('dx=e的最小二乘解:\n',np.linalg.lstsq(d,e))
runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')
d:
[[-1.78536349 0.52288345 1.76682291]
[-1.44736725 -0.40216682 -0.97816161]]
e:
[[0 1 2]
[3 4 5]]
dx=e的最小二乘解:
(array([[-1.21165387, -1.84715466, -2.48265545],
[-0.43183923, -0.48223461, -0.53263 ],
[-1.09656773, -1.15783533, -1.21910293]]), array([], dtype=float64), 2, array([2.58883153, 1.75896409]))