• Numpy学习笔记


    1、zeros() 用法:

    zeros(shape, dtype=float, order='C') 返回:返回来一个给定形状和类型的用0填充的数组;

    参数:

    shape:形状

    dtype:数据类型,可选参数,默认numpy.float64

    dtype类型:t ,位域,如t4代表4位 b,布尔值,true or false i,整数,如i8(64位) u,无符号整数,u8(64位) f,浮点数,f8(64位) c,浮点负数, o,对象, s,a,字符串,s24 u,unicode,u24

    order:可选参数,c代表与c语言类似,行优先;F代表列优先

    np.zeros((5,), dtype=np.int) 
    array([0, 0, 0, 0, 0])

    2、Numpy初始化

     2.1、np.arange([start,] end [, step])#与list的range相似

    >>> np.arange(10) 
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.arange(1, 10, 2)
    array([1, 3, 5, 7, 9])

     2.2、np.zeros(tupleA)#产生一个tupleA维度大小的矩阵,且初始全为0

    >>> np.zeros((4)) 
    array([ 0., 0., 0., 0.]) >>> np.zeros((4,2))
    array([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]])

     2.3、np.ones(tupleA)#与上面类似,只是初始化全为1

    >>> np.ones((4)) 
    array([ 1., 1., 1., 1.])
    >>> np.ones((4,2)) 
    array([[ 1., 1.], [ 1., 1.], [ 1., 1.], [ 1., 1.]])  

     2.4、np.empty(tupleA)#与上面类似,只是初始化值是不确定的(并不是你以为的0!!!!)

    >>> np.empty((4)) 
    array([ 1.73154357e-316, 4.71627160e-317, 0.00000000e+000, 4.94065646e-324]) 
    >>> np.empty((3,2)) 
    array([[ 0.00000000e+000, 0.00000000e+000], [ 6.94647584e-310, 6.94647586e-310], [ 6.94647586e-310, 6.94647586e-310]])

     2.5、np.array(listA)#把listA转成np,listA只是一个统称,只要是序列化的都可以,还可以是其他np, 但其实,np初始化时没有特别说明都会被默认是float64,如前四种

    >>> np.array([[1, 2, 3], [4, 3, 2]])
    array([[1, 2, 3], [4, 3, 2]]) 
    >>> npA = np.array([[1, 2, 3], [4, 3, 2]]) 
    >>> npA array([[1, 2, 3], [4, 3, 2]])
    >>> npB = np.array([[1, 2, 3], [4, 3, 2.0]]) 
    >>> npB array([[ 1., 2., 3.], [ 4., 3., 2.]]) #np.array会自动找到最适合listA数据类型转给np:
    >>> npA.dtype dtype('int64') 
    >>> npB.dtype dtype('float64')

     2.6、其他:ones_like(npA);zeros_like(npA);empty_like(npA) 

    >>> npB = np.array([[1, 2, 3], [4, 3, 2.0]]) 
    >>> np.ones_like(npB) 
    array([[ 1., 1., 1.], [ 1., 1., 1.]]) 
    >>> np.zeros_like(npB)
    array([[ 0., 0., 0.], [ 0., 0., 0.]])
    >>> np.empty_like(npB) 
    array([[ 0.00000000e+000, 0.00000000e+000, 1.56491143e-316], [ 6.94647850e-310, 6.94635322e-310, 1.72361006e-316]])
    >>> np.identity(3) 
    array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
    >>> np.eye(3, k = -1)#变化k的值试试看
    array([[ 0., 0., 0.], [ 1., 0., 0.], [ 0., 1., 0.]])
    

    3、numpy.pad(array,pad_width, mode, **kwargs)

     array:表示需要填充的数组;

     pad_width:表示每个轴(axis)边缘需要填充的数值数目。

       参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值。取值为:{sequence, array_like, int},二维数组中,0轴表示行,1轴表示列

     mode:表示填充的方式(取值:str字符串或用户提供的函数),总共有11种填充模式;

       ‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0

       ‘edge’——表示用边缘值填充  

       ‘linear_ramp’——表示用边缘递减的方式填充

       ‘maximum’——表示最大值填充

       ‘mean’——表示均值填充

         ‘median’——表示中位数填充

      ‘minimum’——表示最小值填充

      ‘reflect’——表示对称填充

      ‘symmetric’——表示对称填充

      ‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面 

     >>> a = [[1, 2], [3, 4]]
     >>> np.lib.pad(a, ((3, 2), (2, 3)), 'minimum') 
    array([[1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [3, 3, 3, 4, 3, 3, 3], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1]])
    

    4、numpy random类

     4.1、numpy.random.random() 生成随机浮点数 默认为生成一个随机的浮点数,范围是在0.0~1.0之间,也可以通过参数size设置返回数据的size; 生成一个随机的浮点数:

    >>>import numpy as np
    >>>n=np.random.random() 
    >>>print(n) 0.429489486421 
    >>>import numpy 
    >>>n = numpy.random.random(size=(3, 2)) 
    >>>print n [[ 0.32018625 0.22410508] [ 0.57830333 0.74477335] [ 0.08333105 0.48533304]]

     4.2、numpy.random.randint() 产生随机整数 API: randint(low, high=None, size=None, dtype=’l’) numpy.random.randint()随机生一个整数int类型,可以指定这个整数的范围

    >>>import numpy as np 
    >>>print np.random.randint(8) 
    >>>print np.random.randint(5, size=3) 
    >>>print np.random.randint(6, size=(3,2)) 4 [1 1 3] [[2 4] [5 4] [3 0]]

      4.3、numpy.random.normal()  高斯分布随机数 API: normal(loc=0.0, scale=1.0, size=None) loc:均值,scale:标准差,size:抽取样本的size

    >>>import numpy 
    >>>n = numpy.random.normal(loc=0.0, scale=1, size=(2, 3)) 
    >>>print n [[-0.15040995 -0.43780718 -0.22292445] [-0.89388124 -0.39465164 0.24113838]]

        4.4、numpy.random.randn() 标准正态分布随机数 numpy.random.randn(d0, d1, …, dn)函数: 从标准正态分布中返回一个(d0*d1* …* dn)维样本值 

    >>>import numpy as np 
    >>>print np.random.randn(4, 2) [[-1.88753851 -2.54412195] [ 0.51856343 -1.07733711] [ 1.05820592 -0.23889217] [ 0.73309062 0.42152066]]
    

      

        4.5、numpy.random.rand() 生成[0, 1)间随机数 numpy.random.rand(d0, d1, …, dn)函数: 生成一个(d0*d1* …* dn)维位于[0, 1)中随机样本 

    >>>import numpy as np 
    >>>print np.random.rand(2,3) [[ 0.06112299 0.02476706 0.04235452] [ 0.47891264 0.68831817 0.31309659]] 

        4.6、numpy.random.shuffle() 随机打乱序列 numpy.random.shuffle() 将序列的所有元素随机排序 <传入参数可以是一个序列或者元组> 

    >>>import numpy as np 
    >>>x = range(0, 8, 1) 
    >>>print x 
    >>>np.random.shuffle(x) 
    >>>print x [0, 1, 2, 3, 4, 5, 6, 7] [2, 3, 5, 4, 1, 7, 0, 6] 

        4.7、numpy.random.choice() 随机选取序列的一个元素 numpy.random.choice()可以从序列(字符串、列表、元组等)中随机选取,返回一个列表,元组或字符串的随机项。 

    >>>import numpy as np 
    >>>print np.random.choice(['a','b','c','d','e']) c 
    >>>print np.random.choice(5, 6) #输出6个小于5的数 [2 3 3 3 1 2] #p:每个条目出现的概率。如果没有,假设样本在A中的所有条目都具有均匀分布。 
    >>>print np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0]) #(p=[0.1, 0, 0.3, 0.6, 0]即出现0 1 2 3 4的概率分别是[0.1, 0, 0.3, 0.6, 0]) [0 3 2] 

        4.8、numpy.random.binomial() 二项分布采样 numpy.random.RandomState.binomial(n, p, size=None)表示对一个二项分布进行采样,s为成功次数 P(N)=CsnPs(1−P)n−s size:采样的次数,n p即式中的n p;函数的返回值表示n中发生/成功的次数s. 如:当n=5,p=0.2,size=1000,即5个事件每个发生的概率为0.2,则5个同时发生的概率,采样size=1000次: P(p=0.2)=C55p5(1−p)0=0.32 

    >>>import numpy as np 
    >>>print sum(np.random.binomial(5, 0.2, size=10000)==0)/10000. 0.3246 4.9、numpy.random.RandomState() 指定种子值 numpy.random.RandomState()指定种子值(指定种子值是为了使同样的条件下每次产生的随机数一样,避免程序调试时由随机数不同而引起的问题) 如不设置种子值时,np.random.randint(8)可能产生0-7内的任意整数,且每次产生的数字可能是任意一种. 而设置种子值后,np.random.RandomState(0).randint(8)可能产生0-7内的任意整数,但种子值不变时每次运行程序产生的数字一样. 
    >>>import numpy as np 
    >>>print np.random.RandomState(0).randint(8) 4 
    >>>n1 = numpy.random.RandomState(0).random_sample() 
    >>>n2 = numpy.random.RandomState(0).random_sample(size=(2,3)) 
    >>>print n1,n2 0.548813503927 [[ 0.5488135 0.71518937 0.60276338] [ 0.54488318 0.4236548 0.64589411]]
    

      

  • 相关阅读:
    20190919-4 单元测试,结对
    20190919-3 效能分析
    20190919-2 功能测试
    git 和conding.net 超详细超简单安装
    html元素contenteditable属性如何定位光标和设置光标
    【分享】WeX5的正确打开方式(6)——数据组件初探
    从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条
    分享一个自己写的基于canvas的原生js图片爆炸插件
    基于 HTML5 的 WebGL 技术构建 3D 场景(一)
    从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命
  • 原文地址:https://www.cnblogs.com/anhoo/p/9343861.html
Copyright © 2020-2023  润新知