python 實現一個反向單位矩陣
反向單位矩陣
單位矩陣即對角線爲 1,如下:
那麼反向的單位矩陣就是反對角線爲 1:
左右鏡像操作
這裏採用 numpy 實現。
- 方案 1
import numpy as np
A = np.eye(3)
print(A)
B1 = np.fliplr(A)
print(B1)
- 方案 2
B2 = A[:,::-1]
print(B2)
這面這兩種方案就可以順利實現反向單位矩陣的定義了。此外,我們拓展了另外兩種操作。
上下鏡像操作
- 方法 1
import numpy as np
b = [1, 2, 3]
B = np.diag(b)
print(B)
# [[1 0 0]
# [0 2 0]
# [0 0 3]]
B3 = np.rot90(B)
print(B3)
# [[0 0 3]
# [0 2 0]
# [1 0 0]]
- 方法 2
B4 = np.flipud(B)
print(B4)
取上三角和反對角線元素
取上三角元素
目標是:
[[1 2 3]
[4 5 6]
[7 8 9]]
==>
[2. 3. 6.]
import numpy as np
row = 3
A = np.arange(row**2)+1
A = np.mat(A.reshape([row, row]))
# print(A)
def ReduceData(R_xx, row):
'''
取上三角元素
'''
vector = []
for i in range(0, row):
a = R_xx[i, i + 1:]
vector = np.append(vector, a)
return vector
print(ReduceData(A, row))
取反對角線元素
[[1 2 3]
[4 5 6]
[7 8 9]]
==>
[3 5 7]
def DiagData(R_xx, row):
'''
取反對角線元素
'''
# vector = []
vector = np.rot90(R_xx)
vector = np.diag(vector)
return vector
print(DiagData(A, row))