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]]

  

posted on 2018-07-20 22:15  Anhoo  阅读(421)  评论(0编辑  收藏  举报