一、一维矩阵的加减乘除,三角函数
注意,如果是两个数组运算,则元素个数要一致
import numpy as np a=np.array([10,20,30,40]) #array([10, 20, 30, 40]) b=np.arange(4) #array([0, 1, 2, 3]) c=np.arange(3) #array([0, 1, 2]) a+4 #array([14, 24, 34, 44]) a+b #array([10, 21, 32, 43]) #如果两个数组元素个数不一致,就不能相加 a+c #ValueError: operands could not be broadcast together with shapes (4,) (3,) a-b #array([10, 19, 28, 37]) a*b #array([ 0, 20, 60, 120]) b/a #array([0. , 0.05 , 0.06666667, 0.075 ]) sum(a) #100 sin(a) # array([-0.54402111, 0.91294525, -0.98803162, 0.74511316]) np.sin(a) # array([-0.54402111, 0.91294525, -0.98803162, 0.74511316]) cos(a) #array([-0.83907153, 0.40808206, 0.15425145, -0.66693806]) tan(a) #array([ 0.64836083, 2.23716094, -6.4053312 , -1.11721493])
二、多维矩阵的乘法
矩阵的乘法,A(m*n)*B(n*c),其中A的列数=B的行数,生成一个m*c的C矩阵,C[0,0]=A[0,0]*B[0,0]+A[0,1]*B[1,0],C[0,1]=A[0,0]*B[0,1]+A[0,1]*B[1,1]
import numpy as np a=np.array([[1,1], [0,1]]) b=np.arange(4).reshape((2,2)) a*b#两个同型矩阵对应元素的乘积 np.dot(a,b)#矩阵的乘法运算 a.dot(b) #矩阵ab的乘积 ''' array([[0, 1], [0, 3]]) array([[2, 4], [2, 3]]) array([[2, 4], [2, 3]]) '''
写成函数就是这样的了
def array_dot(a,b): m,n=shape(a) j,k=shape(b) c=ones(m*k).reshape(m,k) if n!=j: return else: for i in range(m): for l in range(k): c[i,l]=sum(a[i]*b[:,l]) return c
三、多维矩阵行列运算
import numpy as np a=np.array([[1,2,3],[2,3,4]]) a.sum() a.max() a.sum(axis=1) #array([6, 9]) a.sum(axis=0) # array([3, 5, 7])
四、矩阵的索引运算
argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引
import numpy as np A=np.arange(2,14).reshape print(A) print(np.argmin(A)) #0 print(np.argmax(A)) #11 print(np.mean(A)) # 均值7.5 print(A.mean()) #均值 7.5 print(np.average(A))# 均值7.5 print(np.median(A)) #中位数7.5 print(np.cumsum(A)) # 累加[ 2 5 9 14 20 27 35 44 54 65 77 90] print(np.diff(A))#下面显示 #将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵 print(np.nonzero(A))
五、矩阵转置
import numpy as np A=np.arange(1,10).reshape(3,3) A #transpose print(np.transpose(A)) #T print(A.T) ''' [[1 2 3] [4 5 6] [7 8 9]] [[1 4 7] [2 5 8] [3 6 9]] [[1 4 7] [2 5 8] [3 6 9]] '''
六、矩阵截取clip
import numpy as np a=np.arange(1,13).reshape((3,4)) print(a) print(np.clip(a,5,9))#最小5,最大9,小于5的都成了5,大于9的都成了9 ''' 输出结果 [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] [[5 5 5 5] [5 6 7 8] [9 9 9 9]] '''