【数据分析&数据挖掘】矩阵的运算

 1 import numpy as np
 2 
 3 # 创建矩阵
 4 m1 = np.mat([[1, 2], [1, 2]])
 5 print("m1:\n", m1)
 6 print("m1的类型:\n", type(m1))
 7 
 8 # 矩阵与数的相乘
 9 m2 = 2 * m1
10 print("m2:\n", m2)
11 print("m2的类型:\n", type(m2))
12 
13 # 矩阵的相加,相减 ——>同型矩阵
14 m2 = np.mat([[0, 1], [0, 1]])
15 print("m2:\n", m2)
16 print("m2的类型:\n", type(m2))
17 
18 res1 = m1 + m2
19 res2 = m1 - m2
20 print("相加/相减的结果:\n", res1, "\n", res2)
21 
22 # 矩阵与矩阵的相乘
23 # 左矩阵的列 = 右矩阵的行
24 res = m1 * m2
25 res = np.matmul(m1, m2)
26 res = np.dot(m1, m2)
27 print("矩阵相乘的结果:\n", res)
28 
29 # 矩阵与数组相乘,会自动将数组转化成矩阵再相乘
30 arr = np.array([[0, 1],[0, 1]])
31 res = m1 * arr # 有可能在某些情况下报错,可以用,不推荐
32 res = np.matmul(m1, arr)
33 res = np.dot(m1, arr)
34 
35 # 矩阵与列表相乘,会自动将列表转化成矩阵再相乘
36 li = [[0, 1], [0, 1]]
37 res = m1 * li  # 有可能在某些情况下报错,可以用,不推荐
38 res = np.matmul(m1, li)
39 res = np.dot(m1, li)
40 
41 print("相乘结果:\n", res)
42 
43 # 如果在列表相乘的时候使用矩阵相乘的API,那么会先将列表转化为矩阵再相乘
44 l1 = [[1, 2], [1, 2]]
45 l2 = [[0, 1], [0, 1]]
46 # res = l1 * l2  # 不可以乘
47 res = np.matmul(l1, l2)
48 res = np.dot(l1, l2)
49 print("相乘结果:\n", res)
50 
51 # 还有一种相乘方式——对应位置元素相乘——同型相乘
52 res = np.multiply(m1, m2)
53 print("矩阵的对应位置元素相乘:\n", res)
54 
55 arr1 = np.array([[1, 2],[1, 2]])
56 arr2 = np.array([[1, 2],[1, 2]])
57 res = np.multiply(arr1, arr2)
58 print("数组的对应位置元素相乘:\n", res)
59 l1 = [[1, 2],[1, 2]]
60 l2 = [[1, 2],[1, 2]]
61 res = np.multiply(l1, l2)
62 print("列表的对应位置元素相乘:\n", res)
63 
64 # 矩阵的属性
65 m1 = np.mat([[1, 2],[1, 2]])
66 m1 = np.mat([[1, 2, 3], [1, 2, 4]])
67 print("m1:\n", m1)
68 print("m1的类型:\n", type(m1))
69 print("~"*60)
70 print("m1的转置:\n", m1.T)
71 print("m1的逆矩阵:\n", m1.I) # 矩阵必须有逆矩阵才能用
72 print("m1矩阵的共轭转置:\n", m1.H)
73 
74 # 矩阵的视图就是数组 ——可以利用视图将矩阵转化为数组
75 print("m1矩阵的视图:\n", m1.A)
76 print("m1矩阵的视图的类型:\n",type(m1.A))

猜你喜欢

转载自www.cnblogs.com/Tree0108/p/12115455.html