一、numpy的基本运算操作
导入numpy包
import numpy as np # 定义array的类型 # a = np.array([2, 3, 4], dtype=np.int64) # a = np.array([2, 3, 4], dtype=np.int32) # # a = np.array([2, 3, 4], dtype=np.float64) # a = np.array([2, 3, 4], dtype=np.float32) # 多维数组 # a = np.array([[1, 2, 3], # [4, 5, 6], # [6, 7, 8]]) # 生成三行四列的0矩阵 # a = np.zeros((3,4)) # print(a) # # # 生成三行四列的1矩阵 # a = np.ones((3,4)) # print(a) # 生成一个空矩阵 # a = np.empty((3, 4)) # print(a) # 生成[10 12 14 16 18] # a = np.arange(10,20,2) # print(a) # 重新定义array的shape # a = np.arange(12).reshape((3,4)) # print(a) # 生成一个线段,例如生成一个5段的从1到10的数列 # a = np.linspace(1,10,5) # print(a) # array的减法(加减乘除都一样) # a = np.array([10,20,30,40]) # b = np.arange(4) # # print(a,b) # # c = a-b # # 注意python中的平方表示方法用双星号** # c = b**2 # print(c) # numpy当中如何求三角函数 # a = np.array([10,20,30,40]) # b = np.sin(a) # print(b) # b = np.arange(4) # print(b) # print(b<3) # # # 使用numpy进行二维矩阵的运算 # a = np.array([[1, 1], # [0, 1]]) # # b = np.arange(4).reshape((2, 2)) # # print(a) # print(b) # # # 两个矩阵对应元素逐个相乘 # c = a*b # # 使用矩阵乘法 # c_dot = np.dot(a,b) # c_dot_2 = a.dot(b) # # print(c) # print(c_dot) # print(c_dot_2)
# 计算两个矩阵相加.
a = np.random.randint(0,10,size=[3,4]) b = np.random.randint(0,10,size=[3,4]) print(a) print(b) c = a+b print(c)
# 创建一个随机生成的array # a = np.random.random((2,4)) # # print(a) # # print(np.sum(a)) # print(np.min(a)) # print(np.max(a)) # print(np.max(a,axis=1)) A = np.arange(2,14).reshape((3,4)) print(A) # 最小值的索引 print(np.argmin(A)) # 最大值的索引 print(np.argmax(A)) # 计算矩阵的平均值 print(np.mean(A)) print(A.mean()) print(np.average(A)) # 求矩阵的中位数 print(np.median(A)) # 计算矩阵的累加 print(np.cumsum(A)) # 计算矩阵的元素之间的差 print(np.diff(A)) # 找出矩阵中非零的数 print(np.nonzero(A)) # 对矩阵中的元素进行排序(按照逐行进行排序) A = np.arange(14,2,-1).reshape((3,4)) print(A) print(np.sort(A)) # 矩阵的翻转 print(np.transpose(A)) # 或者写成 print(A.T) # 把矩阵截断 print(np.clip(A,5,9)) # 计算矩阵每一行或者每一列的平均值 print(np.mean(A,axis=1)) # axis=1表示对行进行计算 print(np.mean(A,axis=0)) # axis=0表示对列进行计算
# 2022.1.24 # numpy的一维索引 # A = np.arange(3,15) # print(A) # print(A[3]) # # 二维索引 # A = np.arange(3,15).reshape((3,4)) # print(A) # print(A[2]) # # 索引出单个元素 # print(A[1][2]) # 或者print(A[1,2]) # 注意索引下标都是从0开始的 # 索引出一行所有的元素,用: # print(A[2,:]) # # 第一列的所有的数 # print(A[:,1]) # # 输出第一行中的第一列到第三列的数,注意前闭后开 # print(A[1,1:3]) # for循环迭代每一行 # for row in A: # print(row) # for循环迭代每一个列 # 先转置,在迭代转置矩阵的行 # for column in A.T: # print(column) # # # 用for循环访问数组(矩阵)中的每一个项 # print(A.flatten()) # for item in A.flat: # print(item) # # 2022.1.25 # numpy array的合并 # A = np.array([1,1,1]) # B = np.array([2,2,2]) # # # 上下合并 # print(np.vstack((A,B))) # # 左右合并 # print(np.hstack((A,B))) # # 将A进行转置 # print(A[:,np.newaxis]) # # A = np.array([1,1,1])[:,np.newaxis] # B = np.array([2,2,2])[:,np.newaxis] # # 多个array进行合并 # C = np.concatenate((A,B,B,A),axis=0)#axis=0表示列合并 # print(C) # C = np.concatenate((A,B,B,A),axis=1)#axis=0表示行合并 # print(C) # array的分割 A = np.arange(12).reshape((3,4)) print(A) # 对列axis=1进行分割 print(np.split(A,2,axis=1)) # 对行进行分割 print(np.split(A,3,axis=0)) # 在numpy中进行不等量的分割 print(np.array_split(A,3,axis=1)) # 分割方法2 print(np.vsplit(A,3))# 横向分割 print(np.hsplit(A,2))# 纵向分割 # numpy的copy和deep copy a = np.arange(4) print(a) b = a c = a d = b # 直接用=会是的两个矩阵相关联,改变任意矩阵,其余的矩阵就会跟着改变 a[0] = 11 print(a) print(b) print(c) print(d) # 赋值却不关联的方法 ,使用copy函数 b = a.copy() #deep copy的方法 a[1] = 0 print(a) print(b)