《利用python进行数据分析》——Numpy基础

1、建立数组数组

一、建立数组的函数less

  • array:将输入数据(列表、元组、数组或其余序列类型)转换为ndarray,可用dtype指定数据类型。
>>> import numpy as np >>> a=np.array([1,2,3]) >>> a array([1, 2, 3]) >>> c=np.array([1,2,3],dtype=float) #使用的type指定数据类型
>>> c
array([ 1.,  2.,  3.])
>>> c=c.astype(int) #使用astype更改数据类型
>>> c
array([1, 2, 3])
  •  arange:相似于range,但返回的不是列表而是ndarray。
>>> g=np.arange(5) >>> g array([0, 1, 2, 3, 4]) >>> k=np.arange(6).reshape(2,3) >>> k array([[0, 1, 2], [3, 4, 5]])
  •  ones、ones_like:建立全是1的数组。
>>> c=np.ones((2,3),dtype=np.int) >>> c array([[1, 1, 1], [1, 1, 1]]) >>> d=np.ones_like(c) #d的形状和dtype与c相同 >>> d array([[1, 1, 1], [1, 1, 1]])
  •  zeros、zeros_like:建立全是0的数组。
>>> f=np.zeros((2,3,2)) >>> f array([[[ 0., 0.], [ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.], [ 0., 0.]]]) >>> g=np.zeros_like(f) #g的形状和dtype与f相同 >>> g array([[[ 0., 0.], [ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.], [ 0., 0.]]])
  • empty,empty_like:建立新数组,只分配内存但不填充任何值。

注:empty数据并非空的数组,也不是全为0的数组,它返回的是一些未初始化的垃圾值。dom

>>> k=np.empty((2,3))
>>> k
array([[  6.23042070e-307,   3.56043053e-307,   1.37961641e-306],
       [  8.06612192e-308,   2.22523004e-307,   2.44031977e-312]])
>>> g=np.empty_like(k) #g的形状和dtype与k相同
>>> g
array([[  6.23042070e-307,   3.56043053e-307,   1.37961641e-306],
       [  8.06612192e-308,   2.22523004e-307,   2.44031977e-312]])
  • eye、identity:建立一个正方的N*N的单位矩阵(对角线为1,其余为0)

np.eye(N, M=None, k=0, dtype=<type ‘float’>)
能够建立矩形矩阵,且k值能够调节,为1的对角线的位置偏离度,0居中,1向上偏离1,2偏离2,以此类推,-1向下偏离。值绝对值过大就偏离出去了,整个矩阵就全是0了。ide

>>> l=np.eye(3,4,1)  #3行4列,为1的对角线向上移一位
>>> l array([[ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]]) >>> l1=np.eye(3,3,-1) #3行3列,为1的对角线向下移一位
>>> l1 array([[ 0., 0., 0.], [ 1., 0., 0.], [ 0., 1., 0.]]) >>> j=np.identity(3)  #建立方形单位矩阵(对角线为1,其他为0)
>>> j array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])

 

二、Numpy的数据类型函数

 

三、 查看数组维度、数组形状、数据类型测试

>>> a=np.random.randn(4,3) >>> a array([[-1.67075275, -0.53713536, -1.54479383], [-0.95460603,  2.097174  , -0.61332423], [-1.92818377, -0.00663392,  1.34561876], [ 0.54646619, -0.85965155, -0.70237827]]) >>> a.ndim  #查看维度
2

>>> a.shape  #查看形状
(4, 3) >>> a.dtype  #查看数据类型
dtype('float64')

 

2、索引、切片spa

  • 利用行列号索引、切片
>>> a array([[0, 1, 2], [3, 4, 5]]) >>> a[0] array([0, 1, 2]) >>> a[0][2] 2

>>> a[0][1:] array([1, 2]) >>> a[:,:1] array([[0], [3]]) >>> a[:,:2] array([[0, 1], [3, 4]])
  •  利用整数数组作花式索引
>>> a=np.arange(20).reshape(5,4) >>> a array([[ 0, 1,  2,  3], [ 4,  5,  6,  7], [ 8,  9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]) >>> a[[0,2,4]]  #选取第0,2,4行元素
array([[ 0,  1,  2,  3], [ 8,  9, 10, 11], [16, 17, 18, 19]]) >>> a[[0,2,1],[1]] #意为选取(0,1),(2,1),(1,1)的元素
array([1, 9, 5]) >>> a[[0,2,1]][:,[2,0]]#意为选取0、二、1行,2,0列的元素
array([[ 2, 0], [10,  8], [ 6,  4]])
  • 条件索引
>>> a=np.random.randn(4,3) >>> a array([[-0.04603611, -1.04144497,  0.78488753], [-0.06099172,  0.31987999,  0.62553966], [-0.44534405, -0.33631437,  0.07821993], [-0.56541056, -0.42975815, -0.65669226]]) >>> a[a<0] array([-0.04603611, -1.04144497, -0.06099172, -0.44534405, -0.33631437, -0.56541056, -0.42975815, -0.65669226]) >>> b=np.array(['rose','lily','tulips','hyacinth']) >>> b==‘lily‘        #条件判断,返回布尔数组
array([False,  True, False, False], dtype=bool) >>> a[b==‘lily’]     #用布尔数组判断,返回布尔为true的行,注行数要与布尔数组的长度相同
array([[-0.06099172,  0.31987999,  0.62553966]]) 

>>> c=(b=='rose')|(b=='lily') #条件或写法,不能写成or >>> c #多个条件判断 array([ True, True, False, False], dtype=bool) >>> a[c] array([[-0.04603611, -1.04144497, 0.78488753], [-0.06099172, 0.31987999, 0.62553966]])

  >>> b!='rose'    #条件非写法
  array([False,  True,  True,  True], dtype=bool)

  >>> f=(b=='rose')&(b=='lily')  #条件与写法,不能写成and
  >>> f
  array([False, False, False, False], dtype=bool)
 

 

 3、数组和标量间的运算code

大小相等的数组间的算术运算会应用到元素级。blog

>>> a=np.arange(6).reshape(2,3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> a*a array([[ 0, 1,  4], [ 9, 16, 25]]) >>> a+a array([[ 0, 2,  4], [ 6,  8, 10]]) >>> a-a array([[0, 0, 0], [0, 0, 0]]) >>> a/a array([[ nan, 1.,   1.], [ 1.,   1.,   1.]]) >>> a*2 array([[ 0, 2,  4], [ 6,  8, 10]]) >>> a/2 array([[ 0. , 0.5,  1. ], [ 1.5,  2. ,  2.5]]) >>> a**0.5 array([[ 0. , 1.        ,  1.41421356], [ 1.73205081,  2.        ,  2.23606798]])

 

 4、数组转置和轴对换排序

  • T:转置
>>> a=np.arange(6).reshape(3,2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> a.T          #转置
array([[0, 2, 4], [1, 3, 5]])

 

  •  transpose:传入一个由轴编号组成的元组,对这些轴进行转置
>>> arr=np.arange(16).reshape(2,2,4) >>> arr array([[[ 0, 1,  2,  3], [ 4,  5,  6,  7]], [[ 8,  9, 10, 11], [12, 13, 14, 15]]]) >>> arr.transpose(0,2,1)  #transpose(行、列、层)分别用数字0,1,2表明,arr.transpose(0,2,1)意为列、层对换
array([[[ 0,  4], [ 1,  5], [ 2,  6], [ 3,  7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])
  •  swapaxes:接受一对轴编号
>>> arr.swapaxes(1,2)    #接受一对轴编号,列、层对调
array([[[ 0,  4], [ 1,  5], [ 2,  6], [ 3,  7]], [[ 8, 12], [ 9, 13], [10, 14], [11, 15]]])

 

 5、函数

  • abs,fabs   :计算整数、浮点数、复数的绝对值,对于非复数,fabs更快
>>> a=np.random.randn(3,4) >>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.abs(a) array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383,  1.09375872,  0.02773304,  0.53630798], [ 0.57737587,  1.60649999,  0.20384362,  1.22109508]]) >>> np.fabs(a) array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383,  1.09375872,  0.02773304,  0.53630798], [ 0.57737587,  1.60649999,  0.20384362,  1.22109508]])
  • sqrt:计算平方根
>>> b=np.arange(4).reshape(2,2) >>> b array([[0, 1], [2, 3]]) >>> np.sqrt(b) array([[ 0. , 1. ], [ 1.41421356,  1.73205081]])
  • square:计算平方
>>> b array([[0, 1], [2, 3]]) >>> np.square(b) array([[0, 1], [4, 9]], dtype=int32)
  • exp计算指数𝑒^𝑥
>>> np.exp(b) array([[ 1.        ,   2.71828183], [ 7.3890561 ,  20.08553692]])
  • log、log十、log二、log1p :分布为天然对数(以e为底),底数为10的log,底数为2的log,log(1+x)
>>> c=np.arange(1,10).reshape(3,3) >>> c array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) >>> np.log10(c) array([[ 0. , 0.30103   ,  0.47712125], [ 0.60205999,  0.69897   ,  0.77815125], [ 0.84509804,  0.90308999,  0.95424251]])
  • sign:计算各元素的正负号1(正数)、0(零)、-1(负数)
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.sign(a) array([[ 1.,  1.,  1.,  1.], [ 1., -1., -1.,  1.], [ 1.,  1., -1., -1.]])
  • ceil:返回数字的上入整数。
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.ceil(a) array([[ 2.,  2.,  1.,  1.], [ 2., -1., -0.,  1.], [ 1.,  2., -0., -1.]])
  • floor:返回数字的下舍整数
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.floor(a) array([[ 1.,  1., 0., 0.], [ 1., -2., -1., 0.], [ 0., 1., -1., -2.]])
  •  rint:将各元素四舍五入到最接近的整数
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.rint(a) array([[ 1.,  2., 0., 0.], [ 1., -1., -0.,  1.], [ 1.,  2., -0., -1.]])
  •  modf:将数字的小数和整数部分以两个独立数组的形式返回
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.modf(a) (array([[ 0.38259684,  0.5849254 ,  0.4449462 ,  0.2385593 ], [ 0.00091383, -0.09375872, -0.02773304,  0.53630798], [ 0.57737587,  0.60649999, -0.20384362, -0.22109508]]), array([[ 1.,  1., 0., 0.], [ 1., -1., -0., 0.], [ 0., 1., -0., -1.]]))
  •  isnan:返回一个表示是否为nan的布尔型数组
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.isnan(a) array([[False, False, False, False], [False, False, False, False], [False, False, False, False]], dtype=bool)
  •  isfinite、isinf:分别返回一个表示‘哪些元素是有穷的(非inf 非nan)’,和‘哪些元素是无穷的’布尔型数组
>>> a array([[ 1.38259684,  1.5849254 ,  0.4449462 ,  0.2385593 ], [ 1.00091383, -1.09375872, -0.02773304,  0.53630798], [ 0.57737587,  1.60649999, -0.20384362, -1.22109508]]) >>> np.isfinite(a)      #是不是有穷的(非空即有穷)
array([[ True, True, True, True], [ True, True, True, True], [ True, True, True, True]], dtype=bool) >>> np.isinf(a)         #是不是无穷
array([[False, False, False, False], [False, False, False, False], [False, False, False, False]], dtype=bool)
  •  add:将数组中对应的元素相加
>>> b=np.arange(6).reshape(3,2) >>> b array([[0, 1], [2, 3], [4, 5]]) >>> np.add(b,b) array([[ 0, 2], [ 4,  6], [ 8, 10]])
  • substract:从第一个数组中减去第二个数组
>>> d=np.arange(6,0,-1).reshape(3,2) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.subtract(b,d)     #b-d
array([[-6, -4], [-2, 0], [ 2,  4]])
  •  multiply:数组相乘
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> np.multiply(b,b) array([[ 0, 1], [ 4,  9], [16, 25]])
  •  divide,floor_divide:除法、向下整除法
>>> np.divide(b,d)     #b/d
array([[ 0. ,  0.2], [ 0.5,  1. ], [ 2. ,  5. ]]) >>> np.floor_divide(b,d) array([[0, 0], [0, 1], [2, 5]], dtype=int32)
  •  power:计算 第一个数组^第二个数组
>>> f=np.empty((3,2))   #构建一个空数组
>>> f[:]=2     #f中元素都赋值为2
>>> f array([[ 2.,  2.], [ 2.,  2.], [ 2.,  2.]]) >>> np.power(b,f)      #b^f
array([[  0.,   1.], [ 4.,   9.], [ 16.,  25.]])
  •  maximum,fmax:返回两个数组中的最大值,fmax忽略nan
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.maximum(b,d) array([[6, 5], [4, 3], [4, 5]])
  •  minimum,fmin:返回两个数组中的最小值,fmin忽略nan
>>> np.minimum(b,d) array([[0, 1], [2, 3], [2, 1]])
  • mod:求余数
>>> np.mod(b,d)    #求b/d的余数
array([[0, 1], [2, 0], [0, 0]], dtype=int32) >>> np.divide(b,d)
  • copysign:将第二个数组的值的符合复制给第一个数组中的值
>>> f array([[-2., -2.], [ 2.,  2.], [ 2.,  2.]]) >>> np.copysign(b,f)    #把f的符号赋值给b
array([[-0., -1.], [ 2.,  3.], [ 4.,  5.]])
  • greater、greater_equal、less、less_equal、equal、not equal,执行比较运算(>,>=,<,<=,=,!=) ,返回布尔值
>>> b array([[0, 1], [2, 3], [4, 5]]) >>> d array([[6, 5], [4, 3], [2, 1]]) >>> np.equal(b,d) array([[False, False], [False, True], [False, False]], dtype=bool) >>> np.greater(b,d)      #b>d
array([[False, False], [False, False], [ True, True]], dtype=bool)
  •  logical_and,logical_or,logical_xor:执行逻辑运算(&,|,^)
>>> np.logical_and(b,d) array([[False, True], [ True, True], [ True, True]], dtype=bool)
  •  meshgrid:接受两个一维数组A、B,生成两个二维数组
>>> points=np.arange(-5,5,1) >>> points array([-5, -4, -3, -2, -1,  0,  1,  2,  3,  4]) >>> xs,ys=np.meshgrid(points,points) >>> xs array([[-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4], [-5, -4, -3, -2, -1,  0,  1,  2,  3,  4]]) >>> ys array([[-5, -5, -5, -5, -5, -5, -5, -5, -5, -5], [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4], [-3, -3, -3, -3, -3, -3, -3, -3, -3, -3], [-2, -2, -2, -2, -2, -2, -2, -2, -2, -2], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 1,  1,  1,  1,  1,  1,  1,  1,  1,  1], [ 2,  2,  2,  2,  2,  2,  2,  2,  2,  2], [ 3,  3,  3,  3,  3,  3,  3,  3,  3,  3], [ 4,  4,  4,  4,  4,  4,  4,  4,  4,  4]])

 一维数组A[a1,a2,a3…an],一维数组B[b1,b2,b3…bm],meshgrid生成两个数组:

  •  sum:求和
>>> a=np.arange(6).reshape(3,2) >>> a array([[0, 1], [2, 3], [4, 5]]) >>> a.sum()    #所有求和
15
>>> a.sum(0)    #对列求和
array([6, 9]) >>> a.sum(1)    #对行求和
array([1, 5, 9])
  •  mean:算数平均数,零长度的数组的mean为nan
>>> a.mean()     #所有求平均数
2.5
>>> a.mean(0)   #对列求平均数
array([ 2.,  3.]) >>> a.mean(1)    #对行求平均数
array([ 0.5,  2.5,  4.5])
  • max:求最大值
>>> a.max()    #所有求最大值
5
>>> a.max(0)   #对列求最大值
array([4, 5]) >>> a.max(1)   #对行求最大值
array([1, 3, 5])
  • min:求最小值
>>> a.min()    #所有求最小值
0 >>> a.min(0)  #对列求最小值
array([0, 1]) >>> a.min(1)  #对行求最小值
array([0, 2, 4])
  •  argmax,argmin:求最大、最小元素的索引
>>> a.argmax()   #索引的是平铺的数组
5
>>> a.argmax(0)  #按列索引
array([2, 2], dtype=int32) >>> a.argmax(1)   #按行索引
array([1, 1, 1], dtype=int32) >>> a.argmin() 0 >>> a.argmin(0) array([0, 0], dtype=int32) >>> a.argmin(1) array([0, 0, 0], dtype=int32)
  • cumsum:全部元素累计的和
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.cumsum() #对所有元素求累计和,原数组有几个元素返回的数组中就有几个元素
array([ 2,  4,  6,  9, 13, 18], dtype=int32)
#[2, 2+2, 2+2+2, 2+2+2+3, 2+2+2+3+4, 2+2+2+3+4+5] >>> b.cumsum(0) #对列求累计和 (b.shape(n,m),返回的数组shape(n,m)) array([[ 2, 2], [ 4, 5], [ 8, 10]], dtype=int32) #[2,2],[2+2,2+3],[2+2+4,2+3+5] >>> b.cumsum(1) #对行求累计和 (b.shape(n,m),返回的数组shape(n,m)) array([[2, 4], [2, 5], [4, 9]], dtype=int32) #[2,2+2],[2,2+3],[4,4+5]
  • cumprod:全部元素的累计积
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.cumprod()  #对所有元素求累计积
array([  2,   4,   8,  24,  96, 480], dtype=int32) #[2, 2*2, 2*2*2, 2*2*2*3, 2*2*2*3*4, 2*2*2*3*4*5]
>>> b.cumprod(0) #对列求累计积
array([[ 2,  2], [ 4,  6], [16, 30]], dtype=int32) #[2,2],[2*2,2*3],[2*2*4,2*3*5]

>>> b.cumprod(1) #对行求累计积
array([[ 2,  4], [ 2,  6], [ 4, 20]], dtype=int32) #[2,2*2],[2,2*3],[4,4*5]
  • std:标准差
>>> b.std() 1.1547005383792515

>>> b.std(0) array([ 0.94280904,  1.24721913]) >>> b.std(1) array([ 0. , 0.5,  0.5]
  • var:方差
>>> b.var() 1.3333333333333333

>>> b.var(0) array([ 0.88888889,  1.55555556]) >>> b.var(1) array([ 0. , 0.25,  0.25])
  • unique(x):计算x中的惟一元素,并返回有序结果
>>> b array([[2, 2], [2, 3], [4, 5]]) >>> np.unique(b) array([2, 3, 4, 5])
  • in1d(x,y):获得一个表示‘x的元素是否包含y’的布尔型数组
>>> np.in1d(b,c) array([ True, True, True, True, False, False], dtype=bool) # b中元素是否在c中,用b的每个元素,与c的元素逐个比较
  • union1d(x,y):计算x、y的并集,并返回有序结果
>>> np.union1d(b,c) array([0, 1, 2, 3, 4, 5])
  • intersect1d(x,y):计算x、y中公共元素,并返回有序结果
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> b
array([[0, 1],
       [5, 6]])
>>> np.intersect1d(a,b)
array([0, 1, 5])
  • setxor1d(x,y):集合的对称差,即异或
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> b
array([[0, 1],
       [5, 6]])
>>> np.setxor1d (a,b)
array([2, 3, 4, 6])
  • setdiff1d(x,y):集合的差,即元素在x中但不在y中
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> b
array([[0, 1],
       [5, 6]])
>>> np.setdiff1d(a,b)
array([2, 3, 4]
  • any:用于测试数组中是否存在一个或多个True
  • all:用于测试数组中是否所有为True
>>> bools=np.array([True,False]) >>> bools.any() True >>> bools.all() False
  •  diag:以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
>>> f=np.arange(9).reshape(3,3) >>> f array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.diag(f)   #返回方阵f的对角线元素
array([0, 4, 8]) >>> np.diag(f,1)   #返回f对角线上移1位的元素
array([1, 5]) >>> np.diag(f,-2)  #返回f对角线下移2位的元素
array([6]) >>> g=np.arange(4) >>> g array([0, 1, 2, 3]) >>> np.diag(g)         #将一维数组g转换为方阵
array([[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])
  • dot:矩阵乘法
>>> k array([[6, 4, 2], [5, 3, 1]]) >>> b array([[2, 2], [2, 3], [4, 5]]) >>> b.dot(k) array([[22, 14,  6], [27, 17,  7], [49, 31, 13]])
  • trace:计算对角线元素的和
>>> b=np.arange(9).reshape(3,3) >>> b array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> b.trace () 12
  •  det:计算矩阵行列式
>>> np.linalg.det(b) 0.0

 

  • inv:计算方阵的逆
>>> c array([[1, 1, 1], [3, 4, 5], [6, 7, 8]]) >>> np.linalg.inv(c) array([[ -4.50359963e+15,  -1.50119988e+15,   1.50119988e+15], [ 9.00719925e+15,   3.00239975e+15,  -3.00239975e+15], [ -4.50359963e+15,  -1.50119988e+15,   1.50119988e+15]])
  • rand:产生均匀分布的样本值
>>> a=np.random.rand(6) >>> a array([ 0.84127444,  0.5384819 ,  0.90085008,  0.07750325,  0.35909086, 0.70885957])
  • randint(low,high=None,size=None,dtype) :从给定的上下限范围随机取整数
>>> b=np.random.randint(0,9,size=(2,3))   #随机取值0~9的2行3列数组
>>> b array([[2, 7, 1], [1, 4, 8]]) >>> c=np.random.randint(0,9)   #没有size,默认取一个值
>>> c 8
  • randn:产生正态分布(平均值为0,标准差为1)的样本值
>>> d=np.random.randn(6).reshape(2,3) >>> d array([[-0.01535237, -0.81693929, -0.71081245], [-0.10101115, -0.57806109,  1.48653213]])
  • permutation(x) :返回一个序列的随机排列或返回一个随机排列的范围

x:int或array_like
若是 x是一个整数,随机排列。
若是x是一个数组,随机复制一个元素。

>>> np.random.permutation(5)   #0~5的随机排序
array([3, 1, 0, 4, 2]) >>> np.random.permutation([1,2,3])  #数组中元素的随机排序
array([2, 1, 3]) >>> arr=[[1,2,3],[4,5,6]] >>> np.random.permutation(arr)      #二维数组中,行的随机排序
array([[4, 5, 6], [1, 2, 3]])
  •  seed:随机数种子
>>> np.random.seed(5); np.random.rand(10) array([ 0.22199317,  0.87073231,  0.20671916,  0.91861091,  0.48841119, 0.61174386,  0.76590786,  0.51841799,  0.2968005 ,  0.18772123]) >>> np.random.seed(5); np.random.rand(10) array([ 0.22199317,  0.87073231,  0.20671916,  0.91861091,  0.48841119, 0.61174386,  0.76590786,  0.51841799,  0.2968005 ,  0.18772123]) #一样的代码,反复输入运行,结果相同。 
相关文章
相关标签/搜索