zoukankan      html  css  js  c++  java
  • numpy模块

    numpy模块

    专门数组(矩阵)的运算

    lis1=[1,2,3]
    lis2=[4,5,6]
    

    如果我们想让lis1 * lis2得到一个结果为lis_res = [4, 10, 18],非常复杂。

    lis=[]
    for i in range(len(lis1)):
        lis.append(lis1[i]*lis2[i])
    print(lis)
    

    使用numpy模块

    import numpy as np
    arr1=np.array([1,2,3])
    arr2=np.array([4,5,6])
    print(arr1*arr2)
    

    numpy数组

    import numpy as np
    arr=np.array([1,2,3])
    print(arr)   #一维numpy数组
    
    import numpy as np
    arr2=np.array([[1,2,3],[4,5,6]])
    print(arr2)  #二维numpy数组(一般就是二维)
    

    三维的不使用numpy模块,使用tensorflow/pytorch模块

    属性

    T 数组的转置(对高维数组而言)
    dtype 数组元素的数据类型
    size 数组元素的个数
    ndim 数组的维数
    shape 数组的维度大小(以元组形式)
    astype 类型转换

    import numpy as np
    arr2=np.array([[1,2,3],[4,5,6]])
    print(arr2.T)  #行与列互换
    print(arr2.dtype) #int32
    print(arr2.astype(np.float64).dtype)  #float64
    print(arr2.size)  #6
    print(arr2.shape)  #(2,3)
    print(arr2.ndim)  #2
    

    切片

    import numpy as np
    lis=[1,2,3]
    # print(lis[:])
    arr2=np.array([[1,2,3],[4,5,6]])
    # print(arr2)
    print(arr2[:,:])  #取所有
    print(arr2[0:1,:]) #取第一行所有
    print(arr2[0:1,0:1]) #取第一行第一列 
    print(arr2[0,:]) #[1 2 3]
    print(arr2[0,0],type(arr2[0,0]))  #1  <class 'numpy.int32'>
    print(arr2[0,[0,2]])  #[1 3]
    print(arr2[0,0]+1)   #2
    

    合并

    import numpy as np
    arr1=np.array([[1,2,3],[4,5,6]])
    arr2=np.array([[7,8,9],[10,11,12]])
    print(np.hstack((arr1,arr2)))#行合并
    print(np.vstack((arr1,arr2)))#列合并
    print(np.concatenate((arr1,arr2)))#默认列合并
    print(np.concatenate((arr1,arr2),axis=0))#1表示行,0表示列
    

    通过函数创建numpy数组

    import numpy as np
    arr1=np.array([[1,2,3],[4,5,6]])
    print(np.zeros((5,5)))#5行5列的0
    print(np.ones((5,5))*2)#5行5列的2
    print(np.eye(5)) #eye创建单位矩阵
    print(np.arange(1,10,2))  # 生成一维的
    print(np.linspace(0,20,10)) # 平均分成10份  # 构造x坐标轴的值
    arr = np.zeros((5, 5))
    print(arr.reshape((1,25)))  #重塑形状
    

    数组运算

    import numpy as np
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr1)
    arr2 = np.array([[7, 8, 9], [10, 11, 12]])  # 可变数据类型
    print(arr2)
    
    # +-*/ // % **
    print(arr1*arr2)
    print(arr1+arr2)
    

    运算函数

    import numpy as np
    # 运算函数
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr1)
    
    print(np.sin(arr1)) #正弦
    print(np.cos(arr1)) #余弦
    
    print(np.sqrt(arr1)) #开根号
    print(np.exp(arr1))  #取指数函数
    
    

    额外补充

    import numpy as np
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr1)
    arr2 = np.array([[7, 8, 9], [10, 11, 12]])  # 可变数据类型
    print(arr2)
    
    print(arr1.T)
    print(arr1.transpose())
    
    # m*n * n*m = m*m
    print(np.dot(arr1,arr2.T))
    
    # 求逆
    arr1 = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
    print(np.linalg.inv(arr1))
    

    numpy的数学方法

    import numpy as np
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
    print(arr1)
    print(arr1.var())
    print(arr1.std())
    print(arr1.mean())
    
    
    print(arr1.cumsum())  # 累加和
    
    sum 求和
    cumsum 累加求和
    mean 求平均数
    std 求标准差
    var 求方差
    min 求最小值
    max 求最大值
    argmin 求最小值索引
    argmax 求最大值索引
    sort 排序

    numpy随机数(了解)

    print(np.random.rand(3,4)) 产生均匀分布的随机数
    
    print(np.random.randint(1,10,(3,4))) # 最小值1,最大值10,3*4 产生随机整数
    
    print(np.random.choice([1,2,3,4,5],3)) #从arr中随机选择指定数据
    
    print(arr1)
    np.random.shuffle(arr1) 
    print(arr1)
    

    重点

    np.random.seed(int(time.time()))
    np.random.seed(1)
    arr1 = np.random.rand(3,4)  # 可变数据类型
    print(arr1)
    
    rs = np.random.RandomState(1)
    print(rs.rand(3,4))
    
    
  • 相关阅读:
    CSRF的防御解决过程
    Spring生态研习【三】:Spring-kafka
    Spring生态研习【二】:SpEL(Spring Expression Language)
    Spring生态研习【一】:定时任务Spring-task
    给定一个大的任务,需要在考虑性能的情况下,快速处理完,并报告结果
    给定一个大于2的偶数,将其分解为两个质数的和
    一个求解平方根的算法题
    Kafka研究【一】:bring up环境
    LB+nginx+tomcat7集群模式下的https请求重定向(redirect)后变成http的解决方案
    IDEA使用笔记(八)——自动生成 serialVersionUID 的设置
  • 原文地址:https://www.cnblogs.com/aden668/p/11377568.html
Copyright © 2011-2022 走看看