zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/donglian1/p/15272615.html
Copyright © 2011-2022 走看看