• numpy 常用方式


    Python 环境下载

    模块安装 pip install numpy

    1、导入Numpy

    import numpy as np
    

    2、向量相加

    #向量相加-numpy
    def numpysum(n):
        a = np.arange(n)**2
        b = np.arange(n)**3
        c = a + b
        return c
    print(numpysum(20))
    

    3、Numpy数组

    #numpy数组
    a = np.arange(5)
    print(a.dtype)#查看类型
    print(a.shape)#查看维度
    
    #创建多维数组
    m = np.array([np.arange(2),np.arange(2)])
    print(m)
    print(m.shape)#查看维度
    print(m.dtype)#查看类型
    
    #创建0数组或者空数组
    print(np.zeros(10))#创建全是0的数组
    print(np.zeros((3,6)))#创建全是0的多维数组
    print(np.empty((2,3,2)))#创建随机值的数组
    print(np.arange(15))#创建普通数组
    
    #选取数组元素
    a = np.array([[1,2],[3,4]])#生成二维数组
    print(a)
    print(a[0,0])#选取0行0列的元素
    print(a[0,1])#选取0行0列的元素
    print(a[1,0])#选取1行0列的元素
    print(a[1,1])#选取1行1列的元素
    

    4、Numpy数据类型

    #numpy数据类型
    print(np.float64(42))#64位浮点数
    print(np.int8(42.0))#8位整数
    print(np.bool(42))#布尔型
    print(np.float(True))
    print(np.float(False))
    

    5、数据类型转换

    arr = np.array([1,2,3,4,5])#生成一维数组
    print(arr.dtype)#查看类型
    float_arr = arr.astype(np.float64)#转换为64位浮点数类型
    print(float_arr.dtype)#重新查看数据类型
    
    arr = np.array([3.7,-1.2,-2.6,0.5,12.9,10.11])
    print(arr)
    print(arr.astype(np.int32))#将浮点数转换为32位整数类型
    

    6、创建自定义数据类型

    #创建自定义数据类型
    t = np.dtype([('name',np.str_,40),('numitems',np.int32),('price',np.float32)])
    print(t)
    itemz = np.array([('Meaning of life',42,3.14),('Butter',13,2.72)],dtype=t)
    print(itemz)
    

    7、数组与标量运算

    #数组与标量的运算
    arr = np.array([[1,2,3],[4,5,6]])
    print(arr)#输出数组
    print(arr*arr)#数组平方
    print(arr-arr)#数组相减
    print(1/arr)#数组倒数
    print(arr**0.5)#数组开根号
    

    8、一维数组的索引和切片

    #一维数组的索引和切片
    a=np.arange(9);
    print(a[:7:2])#选取(0,6),隔两个选取
    print(a[3:7])#选取(3,6)
    print(a[::-1])#从末尾到头逐一选取
    
    s = slice(3,7,2)#另一种切片方式
    print(a[s])
    
    s=slice(None, None, -1)#从末尾到头逐一选取
    print(a[s])
    

    9、多维数组的索引和切片

    #多维数组的索引和切片
    b= np.arange(24).reshape(2,3,4)#创建一个三维数组
    print(b.shape)#查看维度
    print(b)
    
    print(b[0,0,0])#获得0层0行0列的数据
    print(b[:,0,0])#获得每一层0行0列的数据
    print(b[0])#获得0层的数据
    print(b[0,:,:])#获得0层的数据
    print(b[0,...])#获得0层的数据
    print(b[0,1])#获得0层1行的数据
    print(b[0,1,::2])#获得0层1行每一列的数据,逐2选取
    

    10、布尔型索引

    #布尔型索引
    names=np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])#布尔型数组
    data=np.random.randn(7,4)#生成二维的正态分布数据
    print(names)
    print(data)
    print(names == 'Bob')#查看names数组中的每一个元素是否为Bob,返回一个布尔型数组
    print(data[names == 'Bob'])#显示数组中为True的行
    print(data[names == 'Bob',2:])
    print(names != 'Bob')#查看names数组中的每一个元素是否为Bob,返回一个布尔型数组
    mask = (names == 'Bob') | (names == 'Will')#查看names数组中的每一个元素是否为Bob或Will,返回一个布尔型数组
    print(mask)
    print(data[mask])
    
    data[data < 0] = 0#将数组中小于0的数修改为0
    print(data)
    
    data[names != 'Joe'] = 7#将数组中对应Joe的数据修改为7
    print(data)
    

    11、数组转置

    #数组转置
    arr = np.arange(15).reshape((3,5))
    print(arr)
    print(arr.T)#数组转置
    

    12、改变数组的维度

    #改变数组的维度
    arr = np.arange(20).reshape((4,5))#将数组变为4*5的数组
    print(arr)
    print(arr.flatten())#将数组变回一维数组
    print(arr.ravel())#将数组变回一位数组
    arr.shape = (2,5,2)#将数组变为2*5*2的数组
    print(arr)
    

    13、组合数组

    #组合数组
    a = np.arange(9).reshape(3,3)
    b = 2*a
    #水平组合
    print(np.hstack((a,b)))
    print(np.concatenate((a,b),axis=1))
    #垂直组合
    print(np.vstack((a,b)))
    print(np.concatenate((a,b),axis=0))
    #深度组合
    print(np.dstack((a,b)))
    

    14、组合数组

    #组合数组
    a = np.arange(9).reshape(3,3)
    b = 2*a
    #水平组合
    print(np.hstack((a,b)))
    print(np.concatenate((a,b),axis=1))
    #垂直组合
    print(np.vstack((a,b)))
    print(np.concatenate((a,b),axis=0))
    #深度组合
    print(np.dstack((a,b)))
    
    oned = np.arange(2)
    twice_oned =2*oned#数组*2
    print(np.column_stack((oned,twice_oned)))#按列组合数组
    print(np.row_stack((oned,twice_oned)))#按行组合数组
    

    15、数组的分割

    #数组的分割
    a = np.arange(9).reshape(3,3)
    print(np.hsplit(a,3))#水平分割
    print(np.split(a,3,axis=1))#axis=1代表水平分割
    
    print(np.vsplit(a,3))#垂直分割
    print(np.split(a,3,axis=0))#axis=0代表垂直分割
    

    16、数组的转换

    #数组的转换
    b=np.arange(24).reshape(2,12)#创建一个2*12的数组
    print(b.ndim)#二维数组的维数
    print(b.size)#数组中元素的总个数
    
    b = np.array([1+1j,3+2j])#创建一个复数数组
    print(b.real)#实部
    print(b.imag)#虚部
    
    b = np.array([1+1j,2+3j])
    print(b.tolist())#转换为python的列表
    print(b.astype(int))#转换为整数类型
    print(b.astype(complex))#转换为复数类型
    

    17、利用数组进行数据处理

    points = np.arange(-5,5,0.01)
    xs, ys = np.meshgrid(points,points)  #分别进行赋值
    print(xs)
    print(ys)
    
    import matplotlib.pyplot as plt#导入一个画图库
    z=np.sqrt(xs**2+ys**2)
    print(z)
    plt.imshow(z,cmap=plt.cm.gray);plt.colorbar()
    plt.title("Image plot of gray")
    plt.draw()
    
    

    18、将条件逻辑表达为数组运算

    xarr=np.array([1.1,1.2,1.3,1.4,1.5])
    yarr=np.array([2.1,2.2,2.3,2.4,2.5])
    cond=np.array([True,False,True,True,False])
    result=np.where(cond,xarr,yarr)  #如果是True就选择xarr,如果是False就选择yarr
    print(result)
    
    arr=randn(4,4)
    result=np.where(arr>0,2,-2) #如果大于0就选择2,如果小于0就是-2
    print(result)
    result=np.where(arr>0,2,arr)
    print(result)#如果为False就保持不变
    

    19、数学与统计方法

    #数学与统计方法
    arr=randn(5,4)
    print(arr.mean())#求均值
    print(arr.sum()) #求和
    
    arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
    print(arr)
    print(arr.cumsum(1))#计算累计和   0的话行累加,1的话列累加
    print(arr.cumprod(1))#计算累计积
    

    20、用于布尔型数组的方法

    #用于布尔型数组的方法
    arr=randn(100)
    print((arr > 0).sum()) #正值的数量
    
    bools = np.array([False,False,True,False])
    print(bools.any())  #是否存在一个为真
    print(bools.all())  #是否都是真的
    

    21、数组排序

    #数组排序
    arr=randn(8)
    arr.sort()#数组进行排序
    print(arr)
    
    arr=randn(5,3)
    arr.sort(1)#按照行进行排序
    print(arr)
    

    22、唯一化以及其他的逻辑集合

    names=np.array(['Bob','Joe','Will','Bob','Joe'])
    print(np.unique(names))  #返回唯一一个元素
    ints = np.array([3,3,2,1,4,5,1,3,2])
    print(np.unique(ints))
    
    values=np.array([6,0,0,3,2,5,6])
    print(np.in1d(values,[2,3,6]))  #一个数组中的元素是否在另一个数组里面
    

    23、线性代数的运用

    x=np.array([[1,2,3],[4,5,6]])
    y=np.array([[6,23],[-1,7],[8,9]])
    print(x.dot(y)) #矩阵相乘
    

    24、随机数的生成

    #随机数生成
    samples = np.random.normal(size=(4,4)) #4*4的随机数服从正态分布
    print(samples)
    
  • 相关阅读:
    003-代码补全,运行,调试
    002-创建基本项目-新项目、空项目、已有项目
    001-使用idea开发环境安装部署,npm工具栏,脚本运行
    0601-Zuul构建API Gateway-API gateway简介、基础使用、路由配置、负载配置
    005-TCP传输控制协议
    0505-Hystrix保护应用-Turbine集群状态监控
    0504-Hystrix保护应用-Hystrix Dashboard的使用与常见问题总结
    0503-Hystrix保护应用-feign的hystrix支持
    004-java类保存优化
    0502-Hystrix保护应用-简介,使用,健康指标等
  • 原文地址:https://www.cnblogs.com/donglian1/p/15272615.html
Copyright © 2020-2023  润新知