#数学基础回顾之矩阵运算#基本概念 #矩阵:矩形的数组,即二维数组。其中向量和标量都是矩阵的特例 #向量:是指1*n或者n*1的矩阵 #标量:1*1的矩阵 #数组:N维的数组,是矩阵的延伸 #特殊矩阵: #全0全1矩阵 #单位矩阵 #矩阵加减运算: #相加,减的两个矩阵必须要有相同的行和列 #行和列对应元素相加减 #数组乘法(点乘) #数组乘法(点乘)是对应元素之间的乘法 #矩阵乘法: #设A为m*p的矩阵,B为p*n的矩阵,m*n的矩阵为C为A*B的乘积,即为C=AB# [a1 b1 * [c1 d1] [a1*c1+b1*c2 a1*d1+b1*d2# a2 b2 ] c2 d2 ] = a2*c1+b2*c2 a2*d1+b2*d2] #数组的创建和访问import numpy as np# a = np.array([1,2,3,4])# print(a) #[1 2 3 4] 一维数组# b = np.array([[1,2,3,4],[5,6,7,8]])# print(b) #[[1 2 3 4][5 6 7 8]] #二维数组# print(b.shape)#(2, 4) 二维4列# print(b.size) #8 数组元素个数# print(b.dtype) #int32 元素类型# array_3 = np.array([[1.0,2,3],[4.0,5,6]])# print(array_3.dtype) #float64 会统一为一种数据类型# array_4 = np.arange(1,10,2)# print(array_4) #[1 3 5 7 9]# print(np.zeros(5)) #[0. 0. 0. 0. 0.]#print(np.zeros([2,3])) #两行三列# [[0. 0. 0.]# [0. 0. 0.]]#print(np.eye(5)) #生成单位矩阵# [[1. 0. 0. 0. 0.]# [0. 1. 0. 0. 0.]# [0. 0. 1. 0. 0.]# [0. 0. 0. 1. 0.]# [0. 0. 0. 0. 1.]] # a = np.arange(1,10)# print(a) #[1 2 3 4 5 6 7 8 9]# print(a[1]) #2# print(a[1:5]) #[2 3 4 5] # b = np.array([[1,2,3],[4,5,6]])# print(b)# # [[1 2 3]# # [4 5 6]]# print(b[1][0]) #4 或者# print(b[1,0]) #4 # c = np.array([[1,2,3],[4,5,6],[7,8,9]])# print(c)# [[1 2 3]# [4 5 6]# [7 8 9]]#print(c[:2,1:])# [[2 3]# [5 6]] #数组和矩阵的运算#快速创建数组# a = np.random.randn(10)# print(a) #正态分布的数组# [ 0.102982 -0.42399255 -0.02220043 0.50845286 -0.72317458 1.875959460.68178584 -1.84984881 -0.77927156 0.55651919]# b = np.random.randint(10)# print(b)#4 随机生成一个小于10的整数# b = np.random.randint(10,size=20)# print(b) #[8 0 9 5 9 2 0 3 1 8 4 3 3 3 2 8 4 9 7 3] #生成20个元素的随机数组# b = np.random.randint(10,size=20).reshape([4,5])# print(b)# [[5 7 0 0 4]# [6 9 2 4 4]# [4 4 4 7 0]# [0 1 8 9 3]] #数组的运算:对应元素的相乘加减等等# a = np.random.randint(10,size=20).reshape([4,5])# print(a)# b = np.random.randint(10,size=20).reshape([4,5])# print(b)# print(a+b)# [[0 4 3 1 8]# [9 2 4 5 0]# [5 6 9 1 5]# [5 1 4 1 3]]# [[8 1 2 0 1]# [1 3 4 5 2]# [5 9 4 7 6]# [2 5 2 5 9]]# [[ 8 5 5 1 9]# [10 5 8 10 2]# [10 15 13 8 11]# [ 7 6 6 6 12]] #矩阵#生成矩阵# a = np.mat([[1,2,3],[4,5,6]])# print(a)# [[1 2 3]# [4 5 6]] #数组与矩阵装换# a = np.random.randint(10,size=20).reshape([4,5])# print(a)# [[2 0 9 1 0]# [5 2 1 6 7]# [3 5 3 3 9]# [7 8 6 3 1]]# print(np.mat(a))#是矩阵matrix类型# [[2 0 9 1 0]# [5 2 1 6 7]# [3 5 3 3 9]# [7 8 6 3 1]] #矩阵的运算# a = np.random.randint(10,size=20).reshape([4,5])# A = np.mat(a)# b = np.random.randint(10,size=20).reshape([4,5])# B = np.mat(b)# print(A)# print(B)# print(A+B) #对应位置相加# print(A-B) #对应位置相减# # [[8 0 3 7 6]# # [5 6 0 0 2]# # [5 3 9 8 8]# # [9 6 2 3 0]]# # [[9 9 2 3 1]# # [7 3 8 9 1]# # [2 8 9 9 3]# # [5 1 6 7 5]]# # [[17 9 5 10 7]# # [12 9 8 9 3]# # [ 7 11 18 17 11]# # [14 7 8 10 5]]# # [[-1 -9 1 4 5]# # [-2 3 -8 -9 1]# # [ 3 -5 0 -1 5]# # [ 4 5 -4 -4 -5]]# print(A*B) #会报错,矩阵运算A矩阵的行数需要等于B矩阵的列数 # a = np.mat(np.random.randint(10,size=20).reshape([4,5]))# b = np.mat(np.random.randint(10,size=20).reshape([5,4]))# print(a)# print(b)# print(a*b)# [[7 1 8 8 8]# [2 7 2 1 6]# [6 6 4 0 8]# [3 3 6 1 0]]# [[3 9 0 5]# [5 9 4 3]# [1 0 1 4]# [8 3 0 4]# [0 5 4 5]]# [[ 98 136 44 142]# [ 51 114 54 73]# [ 52 148 60 104]# [ 38 57 18 52]] #Array常见函数# a = np.random.randint(10,size=20).reshape([4,5])# print(a)# # [[4 0 5 7 5]# # [3 3 6 5 1]# # [8 1 2 5 1]# # [7 6 5 5 6]]# print(np.unique(a)) #[0 1 2 3 5 6 7 8 9] 返回唯一的元素# print(sum(a)) #[13 11 21 19 21] 返回列的和# print(sum(a[0])) #24 返回行的和# print(sum(a[:,1])) #24 返回某一列的和## print(max(a)) #返回最大元素# print(max(a[0])) #返回某行最大元素# print(max(a[:,1]))#返回某列最大元素 #array的input和output#使用pickle序列化numpy arrayimport pickle # x = np.arange(10)# print(x)# f = open("x.pkl","wb")# pickle.dump(x,f) #将x pickle到硬盘上去产生的文件 #读取硬盘数据# f = open("x.pkl","rb")# print(pickle.load(f)) #[0 1 2 3 4 5 6 7 8 9] # x = np.arange(10)# np.save("one_array",x)#直接将数组序列化到硬盘中# #读取数据# print(np.load("one_array.npy")) #[0 1 2 3 4 5 6 7 8 9] # x = np.arange(10)# y = np.arange(20)# np.savez("two_array.npz",a=x,b=y)# c = np.load("two_array.npz")# print(c["a"]) #[0 1 2 3 4 5 6 7 8 9]# print(c["b"]) #[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
原文地址:https://www.cnblogs.com/nikecode/p/11130865.html
时间: 2024-10-17 16:24:28