|
|
第1行: |
第1行: |
| | | |
− | == Numpy数组的广播机制 ==
| |
− | *注意numpy里数组之间的运算和线性代数中的矩阵运算是不一样的
| |
− | *同纬度和形状的数组之间就是同位置的元素两两匹配运算的结果
| |
− |
| |
− | ----
| |
− | import numpy as np
| |
− | <br>x = np.array([[1,2,1],[4,5,6]])
| |
− | <br>y = np.array([[1,2,1],[3,4,5]])
| |
− | <br>print(x+y)
| |
− | <br>>>>>[[ 2 4 2]
| |
− | <br>>>>>[ 7 9 11]]
| |
− | <br>print(x-y)
| |
− | <br>>>>>[[0 0 0]
| |
− | <br>>>>>[1 1 1]]
| |
− | <br>print(x*y)
| |
− | <br>>>>>[[ 1 4 1]
| |
− | <br>>>>>[12 20 30]]
| |
− | ----
| |
− | <br>注意:如果是列和行其中之一有空缺是可以通过复制来运算的。
| |
− | 但是蓝本不能有缺或者多,即行和列都不完整。
| |
− |
| |
− | == 矩阵数组的创建 ==
| |
− |
| |
− | ----
| |
− | import numpy as np
| |
− |
| |
− | <br>a = np.arange(3,10)#默认从3开始到10(不包括10),步长为1
| |
− | <br>print(a)
| |
− | <br>>>>[3 4 5 6 7 8 9]
| |
− | <br>a_ones = np.ones((3,4))#创建3*4的全1矩阵
| |
− | <br>print(a_ones )
| |
− | <br>>>>>[[1. 1. 1. 1.]
| |
− | <br>>>>>[1. 1. 1. 1.]
| |
− | <br>>>>>1. 1. 1. 1.]]
| |
− |
| |
− | <br>a_zeros = np.zeros((3,4))#创建3*4的全0矩阵
| |
− | <br>print(a_zeros )
| |
− | <br>>>>>[[0. 0. 0. 0.]
| |
− | <br>>>>>[0. 0. 0. 0.]
| |
− | <br>>>>>[0. 0. 0. 0.]]
| |
− |
| |
− | <br>a_eye = np.eye(3)#创建3阶单位矩阵
| |
− | <br>print(a_eye)
| |
− | <br>>>>>[[1. 0. 0.]
| |
− | <br>>>>>[0. 1. 0.]
| |
− | <br>>>>>[0. 0. 1.]]
| |
− | ----
| |
− |
| |
− | == 矩阵数组的点乘 —— dot ==
| |
− | ---------------------------------
| |
− | <br>import numpy as np
| |
− |
| |
− | <br>a = np.array([[1,2,3],[7,6,2]])
| |
− | <br>b = np.array([[1,2],[7,6],[8,2]])
| |
− | <br>print(a.dot(b))
| |
− | <br>>>>>[[39 20]
| |
− | <br>>>>>[65 54]]
| |
− | <br>print(a[0,:].dot(b))#第一行的所有列*b
| |
− | ---------------------------------
| |
− |
| |
− | == 行列式的叉乘 —— linalg.det ==
| |
− | ---------------------------------
| |
− | import numpy as np
| |
− |
| |
− | <br>a = np.array([[2,3],[6,2]])
| |
− | <br>print(np.linalg.det(a))
| |
− | <br>>>>-14.000000000000004
| |
− | ---------------------------------
| |